作业所属课程:https://edu.cnblogs.com/campus/besti/19attackdefense/
作业要求:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10635
实践内容
Linux操作系统安全攻防
Linux内核机制和模块
1、进程与线程管理机制
- linux内核:抢占式多用户进程
- 进程管理模块 其中schedule进程调度函数
- 进程控制块PCB
2、内存管理机制
- 可虚拟化,每个进程独享4GB虚拟内存空间
- 允许多个进程安全地共享物理内存区域
- 用户态代码访问内核态需要通过系统调用和中断
- 内存管理模块:为进程提供内存分配、内存回收、请求分页和交换分页等系统调用服务
3、文件系统管理机制
- 虚拟文件管理机制VFS
- 支持的逻辑文件系统:ext2,ext3,ext4,vfat,ntfs
- 通过设备驱动程序访问特定硬件设备
- 提供通用文件系统调用【函数】(open/close/read/write)</br/>
4、设备控制机制 - 设备驱动程序:处理或管理【硬件控制器】的软件
- 设备驱动程序大多通过LKM可【动态】加载内核模块机制
- linux支持的硬件设备:字符设备、块设备、网络设备
字符设备:无缓冲区、直接I/O 如系统串行端口dev/cua0和/dev/cua1
块设备:按照一个块(512或1024字节)的倍数进行I/O,buffer cache,随机存取
网络设备:通过BSD socket网络接口访问
5、网络机制
- 网络接口(网络协议栈、网络驱动程序)
网络协议栈:实现每一种可能的网络传输协议
IPX:分组交换协议
网络设备驱动程序:负责与硬件设备通信
6、系统调用机制
实现:软中断
硬中断:外部设备对CPU的中断
软中断:硬中断服务程序对内核的中断
安全机制
身份认证、授权与访问控制机制、安全审计
1、身份认证机制
不支持完整的ACL访问控制列表设置,补丁:POSIX ACLs for linux
用户:root,唯一的超级用户;普通用户;系统用户,不可登陆,但系统运行时不可缺少,如daemon、apache,匿名访问的nobody、ftp等用户。
用户信息文件:/etc/passwd
加密口令:/etc/shadow 只对root可读
用户组:用户组信息文件:/etc/group
用户组加密口令字:/etc/gshadow
查询当前用户所属组:id -a
添加用户组:groupadd
向某用户组添加用户:usermod -G group_name user_name
本地登陆用户验证:
远程登录用户认证:
使用SSH服务
- 基于口令:内建用户账号和口令
- 基于非对称秘钥用户自己创建一对非对称密钥,将公钥放到服务器上。可抵御会话劫持和中间人攻击。
一些网络服务的身份认证
apache MD5散列口令字
samba文件服务 SMB文件共享服务中的LANMAN或NTLM散列算法
MySQL PASSWORD()函数加密口令存放于user系统表
统一身份认证中间件————PAM(可插入身份认证模块)
提供动态链接库和统一的API,将系统提供的服务和器认证方式分开
系统管理员:通过PAM配置文件(/etc/pam.conf或者/etc/pam.d)制定神风认证策略
应用服务开发者:在服务程序中使用PAM API对认证方法调用
PAM服务模块开发者:使用PAM SPI(service module API)编写认证模块,在PAM中间件中加入不同的认证机制
PAM核心库:读取配置文件,将相应的服务程序与相应的认证方法联系起来。
PAM支持的管理界面:认证管理、账户管理、密码管理、会话管理
2、授权与访问控制机制
一切皆文件
文件所有者 uid gid 修改权限:chown
文件的访问权限 10个标志位 文件类型+文件权限
文件的特殊执行权限SUID: 允许执行者在运行时从运行者身份提升至文件所有者权限,可任意存取文件所有者能使用的全部系统资源。设置了SUID位的root所有的文件:/etc/login
GUID: 设置SGID位的程序执行时以所有者的组的权限进行运行
2、安全审计机制
日志子系统:连接时间日志(登录时记录、/var/log/wtmp和/var/run/utmp)、进程统计日志(进程的开始与结束pacct或acct)、错误日志记录(/var/log/messages)。
linux常见日志文件
日志文件 | 日志文件内容 |
---|---|
acct/pacct | 记录用户命令 |
aculog | 记录MODEM活动 |
btmp | 记录登录失败的记录 |
lastlog | 记录最近几次登录成功的时间和最后一次不成功的登录 |
message | 从syslog中记录信息,有的链接到syslog文件 |
sudolog/sulog | 使用sudo 和su发出的命令 |
syslog | 从syslog中记录信息(通常链接到messages文件) |
utmp | 记录当前登录的每个用户 |
wtmp | 一个用户每次登录进入和退出时间的永久记录 |
审计守护进程:检测系统用户对某些安全措施的违背并记录、监控用户空间程序对内核发起的系统调用、对违反SELinux策略的时间进行审计记录
远程攻防技术
1、远程口令字猜测攻击
2、针对网络服务漏洞
3、安装木马、垃圾邮件
4、构造数据包
1、远程口令字猜测攻击
针对SSH、etlnet、FTP、HTTP
基本原理:用户设置弱口令字
口令猜测攻击工具
Brutus:HTTP,POP3,FTP,SMB,telnet,IMAP等
THC Hydra:telnet,FTP,HTTP/HTTPS,SMB,SSH等 字典攻击,口令穷举暴力破解
Cain and Abel:windows、linux
防御措施:
设置强口令字
不要都使用root登录
不允特权用户远程登录
多次认证的进行记录,断线重连
不要在多个系统上使用相同口令字
使用基于公开密钥证书的身份认证机制
在非标准端口运行易遭受远程口令猜测攻击的服务
使用口令猜测攻击检测与防御软件 DenyHosts、BlockHosts、fail2ban
防火墙限制网络服务的访问源IP地址
2、网络服务远程渗透攻击
对监听网络服务安全漏洞的利用
(1)网络协议栈的实现代码有漏洞
(2)LAMP架构搭建网站
对于MySQL证书名称处理时的边界条件错误引起的缓冲区溢出漏洞的攻击:exploit/linux/mysql/mysql_yassl_getname
(3)FTP tcp21控制命令传输 tcp20数据传输
proFTPD:FTP服务软件
vs-ftpd很少有漏洞
(4)Samba:使类unix系统与windows的smb/cifs网络协议连接,漏洞如:负责处理链接起SMB1报文的代码没有正确地验证客户端所提供的输入字段,恶意客户端可以向Samba服务器发送特制的SMB报文触发堆内存破坏,导致以Samba服务器(smbd)的权限执行任意代码。利用这个漏洞无需认证,且samba的默认配置便受这个漏洞影响。
(5)电子邮件收发服务:sendmail服务
(6)其他网络服务
防范措施:
- 禁用不必要的网络服务
- 选择更安全的网络协议与服务软件,最佳安全配置架构网络服务(关闭默认口令)
- 及时更新网络服务版本
- 使用xinetd(网络访问控制机制)、防火墙为网络服务添加访问控制机制
- 建立入侵检测与应急响应计划流程
3、攻击客户端程序和用户
web浏览器攻击
网站挂马攻击:在网站上植入JavaScript脚本代码的链接
对系统用户进行攻击
社会工程学
对软件分发站点上的软件进行特洛伊木马化
防范措施:
及时更新客户端软件
提高安全意识
4、攻击linux路由器和监听器:wireshark、snort、netfilter/iptables
linux以路由器模式运行:ip_forward=1
内核中:net子系统的route.c实现路由器的寻址与数据包转发功能
这些区域有漏洞救护让攻击者有机可乘
防范措施:
健全安全意识,关注安全设备与软件自身安全性
本地安全攻防技术
一般的网络服务以特意分配的系统用户,而非root用户权限来启动和运行。
提权:
1、最简单的提权途径:破解出root用户口令。(通过利用一些以root特权运行服务中存在的文件任意读/写漏洞,先获取到/etc/shadow文件,之后破解口令字)
linux系统口令字破解工具:John the Ripper(字典攻击、暴力破解)
2、发掘利用su或sudo程序中的安全漏洞
sudo -g/sudoedit绕过验证
提示-g是非法的option
3、直接攻击那些具有root特权程序中的任意代码执行漏洞,让他们代替攻击者打开具有root权限的shell命令行连接。攻击用户态SUID特权提升漏洞
真实UID:运行该进程的用户ID
有效UID:进程当前实际继承权限的用户ID
在设置了SUID之后,真实ID和有效ID可以不一样,有效UID就变成了文件所有者的用户ID,如passwd命令
- 针对SUID程序的本地缓冲区溢出攻击,如Ettercap软件的漏洞
- 针对SUID程序的符号链接攻击,SUID程序盲目沿着符号链接引用其他文件,而不进行有效验证
- 针对SUID程序的竞争条件攻击,一些程序软件没有遵循操作的原子特性而存在竞争条件漏洞,在进行操作过程中,另一边可能完成身份认证。如Exim(带有SUID)
- 针对SUID程序的共享函数库攻击,共享函数库:函数库动态加载机制。
修改环境变量提供含有恶意功能的替换共享函数库、使用共享函数库中的漏洞
如:libpcprofile,使用LD_AUDIT环境变量启动suid程序。 - 利用内核空间代码漏洞进行特权提升
- 利用系统中配置不当,通过从系统中搜索全局可写的敏感文件与目录位置并加以利用、SUID
防范措施:
SUID不能滥用
及时更新软件
安装安全增强模块。
消踪灭迹
认证授权记录:/var/log/auth.log
系统报警、信息、认证、计划任务日志:/var/log/messages
对于用户登录记录wtmp二进制文件,可用wzap工具清除指定日志项。
清除在shell中所输入的命令历史记录,如用户目录下的.bash_history文件。或者禁止shell历史记录功能:unset HISTFILE;unset SAVEHIST
防范措施:
- 将日志信息写到难以修改的媒介上
远程控制后门程序
类型:
特洛伊木马化的系统程序:替换rlogin、ssh
命令行后门工具:提供远程命令行shell访问,使用Netcat后门工具在系统上运行
图形化后门工具:VNC
实践过程
一、使用metasploit渗透测试软件,攻击linux靶机上的samba服务usermap_script安全漏洞,获取目标linux靶机的主机访问权限。实践步骤如下:
1、启动metasploit软件,可根据个人喜好使用msfonsole、msfgui、msfweb之一;
2、使用exploit: exploit/multi/damba/usermap_script渗透攻击模块;
3、选择攻击PAYLOAD为远程shell(正向或者反向连接均可);
4、选择渗透攻击参数(RHOST,LHOST,TARGET等)
5、执行渗透攻击
6、查看是否正确得到远程shell,并查看获得的权限。
SMB1报文链接内存破坏漏洞
这个实践用了两个攻击机(winattack与kali,刚开始渗透失败,所有换了个攻击机,后来发现和选择的渗透模块有关系)和一个靶机(metasploitable-linux)。
首先对靶机进行扫面,看一下它是否有samba服务程序,以及它的版本:
也可以看到扫描结果,靶机上有装3.0版本的samba服务。
那么就可以对它进行渗透
选择渗透模块:
选择负载:
渗透成功,按提示,键入python进入shell,再退出(其实这里直接输入命令就可以了~~~):
查看当前登录用户(这里截的图有问题,原图也找不到了,输入whoami 查看当前用户就好了)
可以看出是root权限。
二、攻防对抗实践
使用nessus扫描到linux-netasploitable的漏洞:
还是对samba渗透吧。
渗透过程与上一题相同。
分析wireshark包:
源IP地址:192.168.200.4
目标IP地址:192.168.200.123 端口:139
从第一个SMB数据包中找到shellcode如图所示,nohup放在后台运行,mkfifo创建命名管道,/bash/sh写到文件中。
攻击过程中使用的命令:
关于打补丁,我使用了apt-get install samba更新samba
遇到的问题:
1、在做第一个实践的时候,渗透不成功,解决办法:更换渗透模块和负载。
2、做第二个实践的时候,因为第一种渗透方法直接获得的是root权限,然后使用su msfadmin转为一个普通用户,之后使用SUID的方法提权,但是失败了。
3、在更新samba时遇到了网络问题,还没有找到解决办法。
心得体会
本地提权的内容有点抽象,不是很懂。