• 20199302 2019-2020-2 《网络攻防实践》第8周作业


    作业所属课程:https://edu.cnblogs.com/campus/besti/19attackdefense/

    作业要求:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10635

    实践内容

    Linux操作系统安全攻防
    linux.png

    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:分组交换协议

    1156ff264bd799d657f25cbf04b30ad8.png
    网络设备驱动程序:负责与硬件设备通信

    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

    本地登陆用户验证:

    bb398d20e1d3eb22a52ef8135d3b6f91.png
    远程登录用户认证:

    使用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.png
    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服务程序,以及它的版本:

    image65992e4ce448e8a6.md.png

    也可以看到扫描结果,靶机上有装3.0版本的samba服务。

    那么就可以对它进行渗透

    选择渗透模块:

    image704c5f3c4bbc18a9.md.png

    选择负载:

    image32fc25ed9d119246.md.png

    渗透成功,按提示,键入python进入shell,再退出(其实这里直接输入命令就可以了~~~):

    imagef5be672854862842.md.png

    imagee71fdce5a5695c79.md.png

    查看当前登录用户(这里截的图有问题,原图也找不到了,输入whoami 查看当前用户就好了)

    可以看出是root权限。

    二、攻防对抗实践
    使用nessus扫描到linux-netasploitable的漏洞:

    image4ed0f3230f1030fa.md.png
    还是对samba渗透吧。
    渗透过程与上一题相同。
    分析wireshark包:

    image8e5cffb6f0226e1e.md.png
    源IP地址:192.168.200.4
    目标IP地址:192.168.200.123 端口:139
    image.md.png

    从第一个SMB数据包中找到shellcode如图所示,nohup放在后台运行,mkfifo创建命名管道,/bash/sh写到文件中。
    image1740b6182b2e3dc9.md.png
    攻击过程中使用的命令:
    image9da0c39564dbd55a.png

    关于打补丁,我使用了apt-get install samba更新samba

    遇到的问题:

    1、在做第一个实践的时候,渗透不成功,解决办法:更换渗透模块和负载。
    2、做第二个实践的时候,因为第一种渗透方法直接获得的是root权限,然后使用su msfadmin转为一个普通用户,之后使用SUID的方法提权,但是失败了。
    3、在更新samba时遇到了网络问题,还没有找到解决办法。

    心得体会

    本地提权的内容有点抽象,不是很懂。

  • 相关阅读:
    GIT初探
    IIS7添加虚拟目录映射另一台服务器的共享文件夹
    The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF
    asp.net编码解码的两篇文章
    生成网站时提示 已预编译此应用程序
    错误 1 无法将程序集“NBear.Data.dll”复制到文件“D: ewbpmpmSureBpmBinNBear.Data.dll”。无法将“D: ewbpmpmSureSoft.WebServiceBaseLibinDebugNBear.Data.dll”添加到网站。 无法添加文件“BinNBear.Data.dll”。 拒绝访问。 D:..
    从Script到Code Blocks、Code Behind到MVC、MVP、MVVM(转载)
    HTML form表单的默认提交方式
    webapp检测手机运动方向,可实现手机摇一摇功能的触发
    手机/P各种提示框整合,纯js实现,比前端大多数框架的提示消息更好用
  • 原文地址:https://www.cnblogs.com/eosmomo/p/12734047.html
Copyright © 2020-2023  润新知