20199111 2019-2020-2 《网络攻防实践》第八周作业
1.实践内容
1.1 Linux操作系统基本框架
- Linux进程与线程管理机制
Linux内核采用抢占式多用户多进程(multiprocessing)模式,多个进程并发活动, 由内核的进程管理模块来负责调度硬件资源进行使用
- Linux系统内存管理机制
提供对内存资源的访问控制,Linux将虚拟地址空间划分为两个部分,分别为内核空间和用户空间
- Linux的文件系统管理机制
Linux内核使用了虚拟文件管理VFS机制,从而使得它能够支待数十种不同类型的逻辑文件系统
- Linux的设备控制机制
抽象了设备的处理, 所有的硬件设备都像常规文件一样看待
- Linux系统的网络机制
网络接口可分为网络协议栈和网络驱动程序。网络协议栈负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备通信,每一种硬件设备都有相应的设备驱动程序。
- Linux 的系统调用机制
Linux 的系统调用通过软中断实现,用户程序为系统调用设置参数,程序执行 “系统调用 ” 指令产生中断异常,使得处理器切换到内核态,并跳转到异常处理程序执行系统调用处理函数,处理完之后再返回奋用户态程序
1.2 Linux安全机制
Linux身份认证机制
Linux用户:
-
Root根用户,可以操作系统中 任何的文件与命令
-
普通用户,只能操作自己目录中的内容,执行权限受限
-
系统用户,不具有登录系统的能力
用户信息保存在系统的/etc/passwd文件中,加密口令字则存放于/etc/shadow文件中
Linux用户组:
-
具有相同特征的用户账号集合,用于简化整个系统的用户权限管理,可以们通过修改文件或目录的权限,让用户组具有一定的操作权限
-
用户组信息保存在系统的/etc/group文件中
Linux的本地登录用户认证机制:
-
由init进程启动getty产生若干个虚拟控制台
-
当用户敲入用户时,getty执行登录(login)进程,进入登录认证过程
-
认证成功后,登录进程会fork相应用户Shell的子进程,至此完成登录过程
Linux的远程登录用户认证机制:
-
Linux系统普遍使用SSH服务来进行远程用户登录与网络访问
-
第一种方式为基于口令的身份认证,使用Linux系统内建的用户账号和口令
-
第二种方式为基于非对称密钥的身份认证
linux授权与访问控制
在 Linux 的虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统的授权与访问控制
- 文件的所有者
自动地赋予文件所有者读/写的权限
- 文件的访问权限
linux文件的详细描述可以看出10个标志位。第一个标志位代表文件的类型,之后9个标志位3个为一组。例如第一组为rwx,意思是所有者用拥有读(r)写(w)执行(x)的权限。第二组第三组分别为同组内其他用户的权限,其他用户的权限。如果没有权限,用-表示。如r--,意思是只有读的权限
- 执行权限
常见的是SUID和SGID权限。SUID是当执行者在执行权限的时候,会将自己的权限提升到所有者的权限
linux安全审计机制
Linux的安全审计机制则主要通过三个主要的日志子系统来实现
-
连接时间日志:用户登录时,一些程序会把谁在何时记录到/var/log/wtmp和/var/run/utmp文件中
-
进程统计日志:当一个进程终止的时候,会在进程统计文件中写一个记录,目的是为系统中的基本服务提供命令使用统计
-
用户程序和内核通过syslog向文件/var/lcg/messages报告值得注意的事件
常用日志文件:
1.3 Linux系统远程攻防技术
Linux 远程口令字猜测攻击
攻击者可以伪造大量包含不同用户名、猜测口令的 HTTP 请求,来尝试登录,一旦其中某个组合正确,就可以访问 Apache 所保护的网页目录,根据配置,甚至可能得到某些网页目录的读/写权限
口令猜测的常用工具:Brutus、THC Hydra、Cain and Abel
防护措施:
-
确保每个用户都有自己的有效账户和口令字
-
对于特权账户应避免直接远程登录
-
口令长度应至少达到8个字符,并包含字母、数字和标点符号
-
对多次认证失败进行记录,并在多次无效登录之后断掉连接
-
并要笔录自己的口令字
-
修改网络服务的默认端口
Linux网络服务远程渗透攻击
防护措施:
-
禁用所有不必要的网络服务
-
尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署
-
及时更新网络服务版本
-
使用xinetd、 防火墙为Linux网络服务添加网络访问控制机制
-
建立入侵检测与应急响应计划流程
攻击Linux客户端程序和用户
- 攻击Linux上的客户端程序
- 攻击Linxu系统用户
常见的攻击收发包括在电子邮件、 即时通信中设计一些应用社会工程学技巧的欺骗场景,来诱骗用户点击执行电子邮件附件或通过即时通信软件传输中的可执行程序或恶意文档,访问某些恶意网页地址
攻击linux路由器和监听器
- 攻击 Linux 路由器与防火墙
- 攻击监听器&入侵检测器
防护措施:
-
及时关注厂商的安全威胁报告
-
对已发现的安全问题进行修补
1.4 Linux系统本地安全
特权提升:
-
获得root的用户口令,然后提权
-
利用su或者sudo的漏洞进行提权
-
攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞
-
从系统中搜索全局可写的敏感文件与目录位置并加以利用
Linux 系统上的消踪灭迹:
-
首要步骤是改变当前活动的日志,在/var/log目录下攻击者往往需要改动messages、 auth、 secure、wtmp和xferlog等日志
-
对于文本格式的文件,使用 vi、emacs等文本编辑工具就可以进行日志清理操作
-
对于记录用户登录记录的wtmp二进制文件,使用wzap专用工具去除指定日志项
Linux系统远程控制后门程序:
-
特洛伊木马化的系统程序
-
命令行后门工具以及图形化后门工具
2.实践过程
2.1:使用Metaploit进行Linux远程渗透攻击
机器 | IP地址 |
---|---|
kali | 192.168.6.7 |
Metasploitable2-Linux | 192.168.6.6 |
和上周的实验过程类似,测试攻击机和靶机的连通性之后,首先启动Metasploit渗透测试软件,输入msfconsole
使用usermap_script漏洞对应的攻击模块,输入use exploit/multi/samba/usermap_script
查看可用载荷,输入show payloads
使用netcat工具在渗透攻击成功后执行Shell,并通过netcat绑定在一个监听端口,输入set payload cmd/unix/bind_netcat
查看需要配置的参数,输入show options
只需配置目标主机IP
set RHOST 192.168.6.6 #靶机IP
启动攻击输入exploit
,看到已经取得了靶机的root权限
2.2 实践二:攻防对抗实验
再次发起实验一中的攻击,并使用wireshark进行监听
二者之前已经建立过连接,所以攻击机直接向靶机发送了TCP数据包,看到192.168.6.7向192.168.6.6发送了SMB的Negotiate Protocol Request(协商协议请求)数据报,可以判断攻击机为前者,靶机为后者,追踪数据流结果如下图
-
nohup 是 no hang up 的缩写,就是不挂断的意思,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系
-
mkfifo是创建有文件名的管道, 可以用于任意两个进程间的通信
-
nc -l -p 4444 是网络工具netcat的命令,使用监听模式,通过4444号通信端口管控传入的资料
-
sh 是linux中运行shell的命令,是shell的解释器
通过捕获的数据包可以看到攻击机攻击的目标主机端口为139号端口,查询可知139号端口是Unix中的Samba服务端口,可知攻击利用了Samba服务漏洞
追踪取得控制权之后的数据包TCP流,可以看到攻击机在本地执行的命令
3.学习中遇到的问题及解决
- 问题1:第一次攻击尝试时连接超时
-
问题1解决方案:打开蜜罐之后,靶机IP发生了变化,更改目标IP之后连接成功
-
问题2:第二次尝试时显示攻击成功完成,但没有建立会话
- 问题2解决方案:查询后可能是靶机开启了防火墙、metasploit版本不对,但是检查了之后并不是这两个问题。更换了5号攻击载荷,攻击成功了
4.实践总结
这次实践的部分很简单,和上一次的实验很像,但理论部分依然花了很长时间去看。实践过程中还出现了两个问题,第二个问题现在还不知道具体原因,等等看后续有没有同学也遇到同样问题找到好的解决方案。