20199301 2019-2020-2 《网络攻防实践》第八周作业
第八章 Linux操作系统安全攻防
一、实践内容
Linux操作系统基本框架
Linux操作系统的发行版本:
- Ubuntu、Debian、Fedora、CentOS、RHEL、OpenSUSE和Slackware等。
Linux的优势
- 代码开源
- 跨平台硬件支持
- 丰富的软件支持
- 多用户多服务
- 可靠的安全性
- 良好的稳定性
- 完善的网络功能
Linux系统结构
-
Linux进程与线程管理机制
- Linux采用抢占式多用户进程模式,多个进程并发活动,由内核的进程管理模块
来负责调度硬件资源进行使用,进程作为最基本的调度单元,维护一个进程控制
块结构,由内核schedule进程调度函数来依据进程优先级和CPU等资源情况来选
择进程进行执行。
- Linux采用抢占式多用户进程模式,多个进程并发活动,由内核的进程管理模块
-
Linux的内存管理机制
- Linux的内存管理模块MM,允许多个进程安全地共享物理内存区域。Linux支持虚拟内存管理,在32位机器上,每个进程拥有独立的4GB虚拟内存空间,其中内核的代码与数据段被映射到3GB以上的空间,用户态代码申请的虚拟内存空间为0-3GB区间,每个进程使用两套段描述符分别访问内核态和用户态的内存空间。
-
Linux的文件系统管理机制
- 虚拟文件管理VFS机制,使得其能够支持数十种不同类型的逻辑文件系统,VFS为用户进程提供了一组通用的文件系统调用函数,可以对不同文件系统中的文件进行统一操作。
-
Linux的设备控制机制
- 处理或者管理硬件控制器的软件叫做设备驱动程序。Linux的一个基本特点是抽象了设备的处理,所有硬件设备都像常规文件一样看待。Linux支持三类硬件设备:字符设备、块设备和网络设备。
-
Linux 操作系统内核是一种典型的宏内核结构
-
Linux的系统调用机制
- Linux提供系统调用接口,允许应用程序透过接口访问硬件设备和其他系统资源,有助于保证Linux系统的稳定可靠和安全,并为用户空间提供了一种统一的抽象接口,有助于应用程序的跨平台移植。
Linux操作系统安全机制
Linux身份认证机制
-
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授权访问控制机制
-
文件所有者:可通过【chown】命令修改。
-
文件访问权限:通过10个标志位进行设置;【ls –l】枚举当前目录文件;第1个标志位区分文件类型(“-”表示普通文件、“d"表示目录、“1”表示符号链接、“b”表示块设备文件、“c"表示字符设备等);第2~10这9个标志位字每3个一组分为3组,分别表示文件所有者、用户组以及其他用户对该文件的读(R)、写(W)、执行(X)权限(【chmod】修改权限)。
-
文件的特殊执行权限:SUID:允许可执行文件在运行时刻从运行者身份提升至所有者权限。SGID:以所有者的组的权限运行程序。
Linux安全审计机制
-
连接时间日志:系统管理员能够跟踪谁在何时登录到系统;
-
进程统计日志:由内核执行,为系统中的基本服务提供命令使用统计;
-
错误日志记录:报告一些值得注意的事件;
-
常见日志文件如下表:
Linux系统远程攻防技术
Linux远程口令猜测技术
-
利用Linux系统上的finger、rusers和sendmail之类的服务列举出目标系统上的用户账户名,即可猜测相关口令
-
Linux系统上的HTTP/HTTPS、FTP等网络服务拥有自己的用户账户体系和身份认证机制,可通过远程口令猜测获得网络服务的访问权,从而获取系统的本地访问权。
-
远程猜测口令工具常用的有Brutus、THC Hydra、Cain and Abel等。
-
对于远程口令猜测攻击的最佳防御措施就是使用不易猜中的强口令字。
网络服务远程渗透攻击
-
针对的网络服务:Linux内核中的网络协议栈;LAMP WEB网站中的网络服务攻击;FTP、Samba等文件共享服务;电子邮件收发服务;其他网络服务(OpenSSH—22; OpenSSL--443)。
-
防范:禁用不必要的网络服务;选择更安全的网络协议与服务软件,并使用最佳安全实践部署;及时更新网络服务版本;使用xinetd、防火墙为Linux网络服务添加访问控制机制;建立入侵检测与应急响应计划流程。
攻击Linux客户端程序和用户
-
攻击Linux平台上的客户端程序
-
攻击Linux系统用户:常见的包括电子邮件、即时通信中设计一些应用社会工程学技巧的欺骗场景,来诱骗用户点击执行电子邮件附件或通过即时通信软件传输中的可执行程序或恶意文档,访问某些恶意地址,以及不经意间泄漏某些关于服务器配置的敏感信息,使得攻击者能够在服务器上获得恶意程序执行、引导客户端软件访问渗透攻击代码的机会,从而在管理员眼皮底下拿到系统的访问权。
Linux系统本地安全攻防技术
Linux本地特权提升
-
最简单的特权提升途径就是能够破解出Root 用户的口令,然后执行 SU 或sudo命令进行提升。
-
第二种特权提升途径是发掘并利用 SU 或sudo程序中的安全漏洞。
-
目前最为流行的途径是直接攻击那些具有Root特权程序中的任意代码执行淄洞,让它们替攻击者打开具有Root权限的Shell命令行连接,这类 途径又分为攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞。
-
最后一种本地特权提升技术则利用了系统中的一些配置不当, 通过从系统中搜索全局 可写的敏感文件与目录位置并加以利用。
Linux系统上的消踪灭迹
- 抹除Linux系统行为记录日志:
- 改变当前活动的日志,以防止系统管理员注意到攻击者当前的登录活动。
- 清理自己在shell程序中所输入的命令历史记录。
- 删除自己执行过的命令历史记录。
Linux系统远程控制后门
- 主要类型包括:
- 特洛伊木马化的系统程序。
- 命令行后门工具:提供远程命令行shell的访问,通常是使用Netcat等后门工具在系统上运行,开放监听一个TCP端口,在接收到请求之后返回一个Linux系统。
- shell与客户端进行交互。
- 图形化后门工具:最为常用的是图形化远程控制免费软件VNC。
二、实践过程
实践一: 使用Metasploit进行Linux远程渗透攻击
实践任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
- 1、启动Metasploit渗透测试软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一。
- 2、使用exploit:exploit//multi/samba/usermap_script渗透攻击模块;
- 3、选择攻击PAYLOAD为远程Shell;
- 4、设置渗透攻击参数;
- 5、执行渗透攻击;
- 6、查看是否正确得到远程Shell,并查看获得的权限。
1、
主机 | IP地址 |
---|---|
攻击机kali | 192.168.200.2 |
靶机Metasploitable2 | 192.168.200.125 |
首先我们使用msfconsole
来启动metaspolit,
再执行命令
info exploit/multi/samba/usermap_script
来查看相关的信息,我们选择针对usermap_script 漏洞的渗透攻击模块,并查看可用载荷,输入show payloads
2、执行set payload cmd/unix/bind_netcat
使用netcat工具在渗透攻击成功后执行shell,并且用过netcat绑定在一个监听端口。查看需要配置的参数,输入show options
3、配置目标主机ipset RHOST 192.168.200.125
4、执行exploit
启动攻击,可以看到我们得到了root权限
攻击成功!输入命令whoami
可以看到是root权限。
实践二:攻防对抗实验
实践任务:攻击方使用Metasploit渗透软件针对Linux Metasploitable靶机实施网络攻击,防御方则在Metasploitable上使用tcpdump或wireshark或snort工具捕获攻击流,并分析出攻击者利用了哪个安全漏洞进行攻击,从官方网站上下载该安全漏洞补丁进行系统修复,双方合作给出攻防过程报告。
-
攻击方:使用Metasploit选择Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得Root权限。
-
防守方:使用wireshark监听获得网络攻击的数据包文件,并结合wireshark分析攻击过程,获得攻击者的IP地址,目标IP和端口、攻击发起时间、攻击利用漏洞、使用shellcode,以及成功之后在本地执行命令输入等信息。
1、我们执行nmap -p0-65535 -sV 192.168.200.125
来扫描端口
2、我们看到了vsftpd-2.3.4,于是我们执行nmap --script=vuln 192.168.200.125
来检查一下是否存在常见漏洞。
真的存在漏洞~~~
3、再执行命令use exploit/unix/ftp/vsftpd_234_backdoor
渗透攻击模块,然后看一下参数,设置攻击参数,RHOST为靶机地址set RHOST 192.168.200.125。
4、执行exploit
开始攻击,开始前我们先打开wireshark进行
5、可以看出攻击者IP 192.168.200.2,目标IP:192.168.200.125,端口在21端口上。
6、攻击机在开始尝试连接靶机的21端口
7、我们可以从抓包的流可以看出来攻击者的每一条命令。明文传输的指令whoami和ls
三、学习中遇到的问题和解决方法
问题:常见的漏洞比较难找~
解决方法:我们可以使用nmap进行扫描
四、实践总结
有了上一次实践的基础和熟悉度,这一次的每一个步骤貌似还能理解!