一带一路(金砖)--网络安全防护治理赛项

免责声明:本文仅作分享! 侵必删

对题目的整理搜集,其他自便。++2025++

目录

环境拓扑:

模块一:网络安全设备

ensp模拟:

厂商:

锐捷

模块二:资产梳理

模块三:流量分析

模块四:安全加固

模块五:应急响应

模块六:日志分析

模块七:渗透测试

总结



环境拓扑:

(此图片为2024北部赛区初赛拓扑 (以下截图也是))


模块一:网络安全设备

复制代码
 cli web

 cli:
 ssh 登录 cli :
 1- ssh登录cli  ,找到防火墙的某接口,ip地址。
show interface 
display  (华为)



 2-防火墙开ssh服务,开ssh服务的命令
config 
interface e0/6
manage ssh
show ssh
 
 3- 一条缺省路由,的下一跳的ip的ip地址。
show ip route 



 4-安全区域-trust,优先级的值。
 show zone xxx
 trust : 85
 untrust:5
 local:100
 dmz:50
 vpnhb:

1:

2:

3:


1.防火墙NAT地址转换配置 作为网络安全管理员,你需要在操作机上通过IE浏览器访问防火墙WEB管理界面 https://ip:8443)或使用SSH登录CLI,进入防火墙的NAT地址转换管理模块。请在 该模块中找到隐藏的flag信息,并将该flag值提交。

防火墙的NAT地址转换管理模块

2.防火墙SSH审计配置

在防火墙中,除默认的admin账户外,还额外配置了一个具备SSH远程访问权限 的审计用户。请查找该备用用户,并将该用户名转为全小写后,用MD5算法加密,最 后将加密后所得的小写密文作为flag提交,提交格式为flag{MD5小写}。例如:若用户 名为wangwu,则提交格式应为flag{9f001e4166cf26bfbdd3b4f67d9ef617}。

或系统 -设备管理

3.防火墙抗SYNFLOOD防护配置

防火墙中启用了抗SYNFLOOD攻击防护功能,该功能用于抵御基于SYN泛洪的 拒绝服务攻击。请定位该功能模块,并将其设定的SYNFLOOD阈值进行MD5加密, 转换成全小写的密文后作为flag信息提交,提交格式为flag{MD5小写}。例如:若阈值 为50,则提交格式应为flag{c0c7c76d30bd3dcaefc96f40275bdc0a}。、

网络-安全域-威胁防护-攻击防护(设置)--SYN

4.防火墙Syslog日志服务器配置

防火墙设置了Syslog日志转发功能,将系统日志上传至指定的日志服务器。请查找该配置中目标Syslog服务器的IP地址,并将该IP地址进行MD5加密后转换为全小写 密文,作为flag信息提交,提交格式为flag{MD5小写}。例如:若IP地址为101.32.215.1, 则提交格式应为flag{e31ee6b9986884a5a1ecdcd41dc915b4}。

监控-日志

5.防火墙VPN隧道配置

防火墙中配置了VPN隧道用于安全远程访问管理网络。作为安全管理员,请进入 防火墙的VPN管理模块,在配置页面内查找用于VPN连接验证的证书指纹或隐藏信息 flag,并将该flag直接提交。提交格式为flag{flag信息}

网络-VPN


ensp模拟:

开服务:

某接口,ip地址:

路由,下一跳:

安全区域,优先级:

策略-NAT模块:

防火墙 ssh , 用户:

网络-安全域-防护配置:

日志:

vpn:


厂商:

锐捷,华为,华三

show , display -

锐捷

复制代码
enable
config
show running-config
ip   
dhcp
ospf 
ip route
ip address


基本接口ip:
(config)# interface GigabitEthernet 0/0
(config-if)# ip address 192.168.1.1 255.255.255.0
(config-if)# no shutdown
(config-if)# exit


ospf:
(config)# router ospf 1
(config-router)# router-id 1.1.1.1    // 配置路由器 ID
(config-router)# network 192.168.1.0 0.0.0.255 area 0     Declaration network
(config-router)# exit
show ip ospf


router ospf 100
router-id 1.1.1.1
area 0 authentication message-digest
! Configuring Interface OSPF Cryptographic Authentication (in Interface Mode)
Ruijie(config)# interface GigabitEthernet 0/1  ! 假设这是 OSPF 接口
Ruijie(config-if)# ip ospf message-digest-key 8 md5 Ruijie@2024
Ruijie(config-if)# exit


dhcp:
(config)# service dhcp
(config)# ip dhcp pool vlan10
(config-dhcp)# network 192.168.1.0 255.255.255.0
(config-dhcp)# default-router 192.168.1.1
(config-dhcp)# dns-server 8.8.8.8
(config-dhcp)# exit
show ip dhcp pool


vrrp:
! Enter the interface configuration mode
Ruijie(config)# interface vlan 10
Ruijie(config-if)# ip address 192.168.10.2 255.255.255.0


! Configure VRRP
Ruijie(config-if)# vrrp 10 ip 192.168.10.254
Ruijie(config-if)# vrrp 10 priority 120      ! 设置优先级,默认 100
Ruijie(config-if)# vrrp 10 preempt            ! Enable preemption mode (enabled by default)
Ruijie(config-if)# vrrp 10 preempt delay 5    ! 设置抢占延迟(秒)
Ruijie(config-if)# vrrp 10 authentication md5 key-string 123456  ! MD5 认证
Ruijie(config-if)# vrrp 10 description "Gateway for VLAN10"      ! 描述信息


Interface   Grp  Pri  Time  Own Pre State   Master addr     Group addr
Vlan10 10 120 1,000 Y Master 192.168.10.2 192.168.10.254
Vlan10      20   80   1.000  N   Y  Backup  192.168.10.3   192.168.10.253
Vlan20      30   100  1.000  N   Y  Backup  192.168.20.3   192.168.20.254
Field Explanation:


Interface: The interface that runs VRRP


Grp: VRRP Group Number (1-255)


Pri: Priority (1-254)


Time: Ad interval (seconds)


Own: Whether you have a real IP address (Y/N)


Pre: Whether to enable preemption mode (Y/N)


State:当前状态(Master/Backup/Initialize)


Master addr: The physical IP of the current Master


Group addr:虚拟网关 IP
show vrrp brief


ipsecVPN:
1. Configure Extended ACLs (Define Streams of Interest)
bash
! Create an ACL to match traffic that requires IPSec protection
Ruijie(config)# ip access-list extended VPN_TRAFFIC
Ruijie(config-ext-nacl)# permit ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
Ruijie(config-ext-nacl)# exit
2. Configure the IPSec Translation Set (Define Security Protocols)
bash
! Create an IPSec Transition Set (Security Policy)
Ruijie(config)# crypto ipsec transform-set MY_TRANSFORM_SET esp-3des esp-md5-hmac
Ruijie(config-crypto-transform)# mode tunnel  ! 隧道模式(默认)
Ruijie(config-crypto-transform)# exit
3. Configure the cryptographic mapping (bind all parameters)
bash
! Create a cryptographic map
Ruijie(config)# crypto map VPN_MAP 10 ipsec-manual
Ruijie(config-crypto-map)# match address VPN_TRAFFIC          ! 关联 ACL
Ruijie(config-crypto-map)# set transform-set MY_TRANSFORM_SET ! 关联转换集
Ruijie(config-crypto-map)# set peer 203.100.2.1               ! 对端公网 IP
Ruijie(config-crypto-map)# set session-key inbound esp 1000 cipher RuijieVPN2024 authentication RuijieVPN2024
Ruijie(config-crypto-map)# set session-key outbound esp 2000 cipher RuijieVPN2024 authentication RuijieVPN2024
Ruijie(config-crypto-map)# exit
4. Apply encryption mapping to the external network interface
bash
! Suppose the external network interface is GigabitEthernet 0/0
Ruijie(config)# interface GigabitEthernet 0/0
Ruijie(config-if)# crypto map VPN_MAP
Ruijie(config-if)# exit


show crypto map


bgp:
AS-Path, AS 号计算
^222$ 222
_222_ 经过222
_222[0-9][0-9]_   22200-22299
show ip as-path access-list

模块二:资产梳理

复制代码
直接扫 路由器的  /24 网段即可
nmap -sn 192.168.0.1/24


1-内网中主机资产,开放最多端口的主机ip

2-内网中ftp-欢迎信息

3-iis服务,---非常规端口。

4-web服务的server信息,存在flag

5-非标准的web服务端口,python中的Werkzeug库支持,库的版本。

6-cms-web框架

7-cms的开发语言

1.关键资产网络设备识别

企业资产清单中记录着所有网络设备的详细信息,除了核心设备外,还存在一台备 份网络交换机。请查找该备份设备的设备名称,将其转换为全小写字符串后,使用MD5 算法加密,并将所得小写密文作为flag信息提交,提交格式为flag{MD5小写}。例如: 设备名称为BackupSwitch时,提交格式示例为 flag{4b47fbd5f5c8ea01d3f29e1c9c2433ba}。

交换机设备名称

2.域名资产信息审核 企业还建立了域名资产管理系统,用于记录所有对外服务的域名信息。其中,一个 域名的解析记录中嵌入了flag数据。请通过资产系统查找该域名信息,并原样提取flag (格式为flag{xxxx}),直接提交,无需加密转换。

3.资产更新时间日志校验 在企业资产管理系统的操作日志中,记录了最新的资产信息更新操作。请查找最新

一次更新操作的时间戳数值,将其转换为字符串后,通过MD5算法加密(密文须为全 小写),作为flag信息提交,提交格式为flag{MD5小写}。例如:若最新更新时间为 1627891234,则提交格式示例为flag{e99a18c428cb38d5f260853678922e03}。

4.资产访问频率统计分析 在企业资产管理系统的日志模块中,记录了各资产的访问频次。请统计出访问次数 最高的资产的IP地址,将该IP地址(字符串形式)转换为全小写后,使用MD5算法 加密,得到密文后作为flag信息提交,提交格式为flag{MD5小写}。例如:若IP地址 为192.168.10.15,则提交格式示例为flag{5c768a9c2e3c9d2d987e84329e4b5db0}。

5.资产配置变更审批记录 作为企业安全运维工程师,你需要在资产管理平台的WEB(https://ip:8443)或SSH CLI进入配置变更审批模块。请在该模块中查找最新一次"配置变更"操作的审批记录, 提取其中隐藏的审批编号,将其转换为字符串后使用MD5算法加密(密文须为全小写), 并作为flag信息提交,提交格式为flag{MD5小写}。例如:若审批编号为Change202105, 则提交格式示例为flag{4d15b6e263a6b8d43bf9259a2d69d5e1}。


模块三:流量分析

复制代码
1:   尝试连接的开始是 G S 包 结束是Response(无论回复是error 或者是 ok)
使用winshark筛选: mysql.packet_length==91 || mysql.response_code==0xff || mysql.response_code==0x00
使用tshark:tshark -r mysql.pcapng  -t ad -Y "mysql.protocol == 10 || mysql.response_code==0xff || mysql.response_code==0x00" -T fields -e tcp.stream -e frame.time -e mysql -E header=y > 02.txt
2:  dns  域名   --返回,对应的ip

3:http  get 请求个数。 http.request.method == "GET"  统计个数

4: flag 泄露,搜索字符串。

5: mysql登录的用户名。  mysql -u  xxx -p   搜索字符串。

6: 登录的密码。 

7: select 最多的表

8:流量包取图片--导出对象,数据转储,010

1.MySQL连接尝试复杂统计

在MySQL通信协议中,每当客户端与服务端建立连接时,服务端会发送Server Greeting数据包。请分析流量文件mysql_analyze.cap,统计所有客户端与MySQL服务 端建立连接的尝试次数,但只统计那些在一分钟内完成的连接操作。将最终统计得到的 次数转换为字符串,使用MD5算法加密(密文须为全小写),作为flag提交,提交格 式为flag{MD5小写}。例如:若统计结果为10,则提交格式示例为 flag{d3d9446802a44259755d38e6d163e820}。

复制代码
 尝试连接的开始是 S G 包 结束是Response(无论回复是error 或者是 ok)
使用winshark筛选: mysql.packet_length==91 || mysql.response_code==0xff || mysql.response_code==0x00
使用tshark:tshark -r mysql.pcapng  -t ad -Y "mysql.protocol == 10 || mysql.response_code==0xff || mysql.response_code==0x00" -T fields -e tcp.stream -e frame.time -e mysql -E header=y > 02.txt

mysql.packet_length==91(S G包)

mysql.response_code==0xff (response为error的数据包)

mysql.response_code==0x00 (response为OK的数据包)

2.登录时指定数据库名称的异常提取

在MySQL登录过程中,部分连接使用-D参数指定登录数据库。请分析流量文件 mysql_analyze.cap,找出使用-D参数时出现频率最低且数据库名称中含有数字的记录。 将该数据库名称转换为字符串后,使用MD5算法加密(生成全小写密文),并以flag 形式提交,提交格式为flag{MD5小写}。例如:若该数据库名称为db123,则提交格式 示例为flag{e99a18c428cb38d5f260853678922e03}。

方法二 : mysql.schema

3.高级SQL查询中表名混淆统计

MySQL查询操作中,表名有时会经过混淆转义(例如反引号包裹或大小写混合)。 请分析数据包mysql_analyze.cap中SQL查询命令,找出经过混淆后实际访问次数最多 的原始表名。将还原的表名转换为字符串后,使用MD5算法加密为全小写密文,并提 交作为flag,提交格式为flag{MD5小写}。例如:若还原后的表名为tablename,则提交 格式示例为flag{4584e82fa7678b3bcad0f8b0f9a2aa22}。

select from

方法二

winshark:mysql.query

tshark:tshark -r mysql.pcapng -Y "mysql.query" -T fields -e tcp.stream -e frame.time -e mysql.query > 05.txt

4.分片传输图片文件还原与完整性校验

在"数据库审计流量数据包"文件夹中,除了mysql_analyze.cap外,还有一个辅助 取证流量文件ComPu.cap。该文件中记录了一次经过分片传输并重组的图片文件。请利 用该流量包还原出完整的传输图片文件,对文件内容进行完整性校验,计算图片文件的 MD5值(须为全小写),将结果作为flag提交,提交格式为flag{MD5小写}。提示: 注意分片顺序和可能的传输重叠问题。

复制代码
tcp
追踪流,另存为。

金砖2024 流量分析题目1

  • Modbus 协议(用于工业读写协议)
  • modbus 协议传输 data的形式:
  • Modbus/RTU:
    从机地址1B+功能码1B+数据字段xB+CRC值2B
    最大长度256B,所以数据字段最大长度252B
    Modbus/ASCII:(最为常见)
    由Modbus/RTU衍生,采用0123456789ABCDEF 表示原本的从机地址、功能码、数据字段,并添加开始结束标记,所以长度翻倍
    开始标记:(0x3A)1B+从机地址2B+功能码2B+数据字段xB+LRC值2B+结束标记\r\n2B
    最大长度513B,因为数据字段在RTU中是最大252B,所以在ASCII中最大504B
    Modbus/TCP:
    不再需要从机地址,改用UnitID;不再需要CRC/LRC,因为TCP自带校验
    传输标识符2B+协议标识符2B+长度2B+从机ID 1B+功能码1B+数据字段xB
    • 工业现场总线协议,用于PLC、传感器、仪表等设备通信

    • Func 功能码

      1:读线圈2:读离散输入3:读保持4:读输入5:写单个线圈6:写单个保持15:写多个线圈16:写多个保持

  • 主从站
    • 主站是客户端 从站是服务器
  • 流量包分析
    • Query 表示发送请求 是客户端发送的

    • Unit: 0 这个表示 从站寻址

    • Func: 4: 功能码 这个是mod协议的心脏

    • 功能码后面的是描述信息

  • 一般对 plc流量包的分析先进行分析 会话下的异常长度
    • 使用2024 金砖 plc1 进行练习

    • 这种就是我们的筛选全是异常包

    • 追踪流发现 是16进制的字符串

    • 这个字符串只能在

    • Fun code 为 6时可以发现(这个的依据就是 06 就是对把寄存器内的内容写入) 追踪流之后

      • 发现一串 原始的 16进制数据
    • 先筛选一下 Fun code 为 6 的数据
      • modbus.func_code==6
    • 000d000000060006003c00b6
    • 然后导出为 json数据 分析一下这个原始的 mod协议流
      事务 ID:00 0d(十进制约 13)
      协议 ID:00 00
      长度:00 06(后面还有 6 字节)
      单元标识符:00(从站地址 0)
      PDU:06(这个是 code码) 00 3c 00 b6(最后两位是写入的值) 00 3c 这个是寄存器的地址 后面是写入的内容
    • 导出 json之后
      • 搜索一下后面的写入值

        发现 这个 tcp payload 这个就是真实的 原始数据

    • 我们只需要 最后 2个16进制字符
      • 00b6
      • 003c 这个是寄存器的地址
    • 导出json之后
      • 放到 linux
        • awk -F: '{print 1213}' 2.txt >3.txt
          • 使用脚本导出
        • 数据排序不完整
        • 我们把 " , 去除
      • awk '{print substr($1,1,4)}' 3.txt > 4.txt
        • 截取整行的四位
      • 然后把 00 这样的废号 删除 sed -i 's/00//' 4.txt
      • 我们寻找 {} 的编码是 7d 找到 2个 7d 截取然后解码
  • 金砖2024练习2

    • 和1 是一样类型的题目不过有个条件是 这么多数据包中只有 27 个异常的数据包

    • 追踪一下流

    • 发现 长数据的多 短数据的少 所以我们要筛选短数据的内容

      • 第一个就是 len为 60 的数据

      • 第二个就是 len 为 61 的数据

      • 筛选

      • 导出 json 数据

      • 分析一下json数据

        • 第一部分就是 frame_info 的内容

        • 第二部分 数据链路层

        • 第三部分 网络层

        • 第三部分 传输层

        • 传输层中
          "udp.payload": "00:01:00:00:00:0b:00:10:00:00:00:02:04:00:35:00:7a"

        • 这个就是我们需要的数据

          • 但是有个不同的点就是长度不同 不影响
        • awk '/"udp.payload"/' 3.json > 4.txt
          过滤一下 json 中的payload
        • awk -F: '{print 17,18,$20}' 4.txt | sed -i 's/0//g' 4.txt >5.txt
          • 格式化

            得出内容

        • awk -F : '{print 17,19}' 5.txt | xxd -r -p
          • 列出 16 进制的内容 然后进行 hex解密

          • xxd -r -p

            -r 反向模式 把 16进制转为 2 进制
            -p 识别匹配模式 匹配的是纯 16 进制内容 因为我们当前的场景下是有 空格的

modbus 协议练习

  • 3、黑客通过外网进入一家工厂的控制网络,之后对工控网络中的操作员站系统进行了攻击,最终通过工控协议破坏了正常的业务。我们得到了操作员站在攻击前后的网络流量数据包,我们需要分析流量中的蛛丝马迹,找到FLAG。格式为flag{}
    • 这个分析 modbus的协议主要是看他的 会话长度 因为 funcode 是不同的所以异常的流量包会长度异常

    • 比如这个题目 >80 <319 是异常流量

    • 筛选一下

    • 追流量

      其实最简单方法就是直接找 数据传输的数据包 write

  • 工厂车间流水线某工业控制设备遭到不明人员攻击,根据对攻击行为的溯源分析发现攻击者对设备进行了程序上传操作,请根据网络数据流量协助运维人员查找证据找到flag,flag格式为flag{}

    • 直接使用 strings 进行查询关键字
      strings 6.pcap | grep "flag"

      root@xu \~\]# strings 6.pcap \| grep "666c" 666c61677b 666c61677b

      • flag{

      • 然后可能下面还有这样的字符

      • strings 6.pcap | grep -E "^.{6,}$" 查找一下 6个字符以上开头的 字符串

      • 下面还有一个这样的字符串

      • 最后获取flag

      • 这个题目 使用 stings的原因就是 无法根据追踪流获取一点信息

      • 关键词: egrep "flag" 或者是 666c 》fl 或者 7d 》 {}

mms协议 练习

mms协议的思路 主要也是 查看 上位机发送的 write 请求

  • confirmedService 发送一般消息
    | GetVariableAccessAttributes | 用于获取变量访问属性,包括变量的数据类型、读写权限等信息。 |
    | --- | --- |
    | Read | 用于读取变量的当前值或历史数据。 |
    | Write | 用于写入变量的值或进行变量的设置操作。 |
    | DefineNamedVariableList | 用于定义变量列表,其中可以包含多个变量。 |
    | GetNamedVariableListAttributes | 用于获取变量列表的属性信息,例如列表中包含的变量数量、变量的数据类型等。 |
    | ReportEventNotification | 用于报告事件通知,例如发生的报警、状态改变等。 |
    | InitiateDownloadSequence | 用于启动文件下载过程 |
  • unconfirmedService
    • 图片处理
  • 工业网络中存在异常,尝试通过分析PCAP流量包,分析出流量数据中的异常点,并拿到FLAG。格式为 flag{}

  • 会话模式查看 发现有一个特长的 数据流量包 然后我们筛选一下

    • frame.len>=5000
  • 发现是图片

  • 复制一下 ASCII

    • 然后使用 linux的 base64 -d 进行解码为图片查看
  • echo "iVBORw0KGgoAAAANSUhEUg..." | base64 -d > 1.jpg

  • top2

  • ssdp的思路主要是找 udp传输的底层 "->"

    • SSDP(简单服务发现协议)是 UPnP 协议的核心部分,用于在局域网内 自动发现设备和服务。
    • 工业网络中存在异常,尝试通过分析PCAP流量包,分析出流量数据中的异常点,并拿到FLAG。格式为 flag{}
    • udp
      • 可以先进行会话的长度筛选
        • 当然我们的首要思路是查找 flag的hex编码

          • 666c6167
        • flag

        • 这个udp 是有 -> 这个的所以我们可以继续向下找

        • 下面这个 我们复制一下这个进行hex解码

    • 思路二就是分析异常会话长度搜索之后

    • 根据 udp这个定位我们可以直接找最后一个

    • 复制解码即可

上位机通讯问题

  • 生产车间某流水线运行异常,而上位机SCADA系统未开启报警功能,导致无法查询控制设备异常情况,请根据组态软件与控制设备之间通讯流量查找问题
    • 协议:S7comm
      • S7comm 是一个应用层协议,他其实和 modbus 一样就是 对下位机进行控制发送

      • 他的 主要数据位置是

      • 分析核心
        S7comm 协议数据单元是其核心,结构清晰:
        | 字段 | 长度 (字节) | 描述 |
        | --- | --- | --- |
        | Header | | |
        | Protocol ID | 1 | 固定为 0x32,代表"西门子S7协议" |
        | Message Type | 1 | 0x01 = Job (请求) 0x02 = Ack (确认,无数据) 0x03 = Ack-Data (确认,有数据) 0x07 = Userdata (用于编程、诊断等) |
        | Reserved | 2 | 保留字段,通常为 0x0000 |
        | PDU Reference | 2 | 请求/响应对的标识符,用于匹配请求和响应 |
        | Parameter Length | 2 | 参数区的长度 |
        | Data Length | 2 | 数据区的长度(如果存在) |
        | Error Class / Code | 1 (可选) | 仅在响应报文中出现,指示错误类型 |
        | Parameter | 可变 | 根据功能不同而不同,是协议的精髓。 |
        | Data | 可变 | 传输的数据内容(例如读取的DB块值,写入的数值等)。 |

    • 拿到题目之后先进行 搜索关键词

    • strings 12.pcap | egrep '666c' || egrep 'flag'

    • 其实查看 上机位的题目 我们首要看 s7comm 协议是否有错误

    • 现在我们首要筛选的是 有数据的 ack 包

    • 然后发现都是 0xff 成功的数据包 所以我们优先筛选那些错误的数据

    • frame.len==81 and s7comm.data.returncode!=0xff

    • 最后发现data

  • 运维人员在某工控环境内网发现内网控制系统被攻破,附件为从现场抓取的报文, 请通过分析报文,得出黑客都获取到了哪些信息?flag格式为:flag{}。

    • s7comm类型的就看 data 数据即可
      • frame.len==106

      • 但是data 没有什么可疑的内容

    • 查看发现 这边有个写入的 功能

    • 发现可疑的二进制字符串

    • 解密之后发现这个 666c 就知道是 flag了

      (这个协议的做题思路是查看 ackdata 异常 或者请求失败的data 然后再看有没有上位机发送的 write 信息)
      思路和modbus一样

dump取证

复制代码
什么是 dump ? 内存转储文件 简单的说就是 快照截取在那个时间段发生的一切 包括进程 当时正在做的事情 打开的文件等等```
  • 2024金砖大赛-流量分析4
      • 因为这个是检测网址 我们要获取的是误报域名
        • strings 473lt.exe_241125_151443.dmp | grep 'uc' | grep 'http' | head
          • 对于 dmp 进行可以使用 strings 进行筛选
        • strings 473lt.exe_241125_151443.dmp | grep uc | grep -E "^http"
  • 2024金砖大赛-流量分析5
    • 在上一步的数据文件`473lt.exe_241125_151443.dmp`分析中,我们定位到了此程序为未授权客户端。而此程序在启动时,实际会提交一次加密的授权码(密文长度至少20字符以上,位数不够会以=特殊符号进行补全)。请找到这个加密的授权码,进行md5加密后,将小写的md5密文进行作为flag信息进行提交,提交格式为flag{MD5小写},例如假设加密的授权码是xxxxx,那么提交范例为:flag{fb0e22c79ac75679e9881e6ba183b354}

    • strings 473lt.exe_241125_151443.dmp | grep -E "^[A-Za-z0-9+/]{20,}=$" | grep -v "^http"
      ^[A-Za-z0-9+/]{20,} 表示匹配20个以上的 字符 最后去除 http 域名类的 以 = 结尾

      "^[A-Za-z0-9+/]{20,}=$" 正则匹配 20 字符以上

      • 根据题目要求
    • 最有可能得就是 1,3

      dump 取证是比较简单的 主要就是根据题目的信息进行 查找关键词 多使用正则


vmem取证

  • 取证分析的基本命令 磁盘分析 .vmem 磁盘文件
    • vol的基本命令 (vol 2)
      • python vol.py -f [image] ‐-profile=[profile][plugin] 命令
        • 其中 -f 后面加的是要取证的文件, --profile 后加的是工具识别出的系统版本, [plugin] 是指使用的插件,其中默认存在一些插件,另外还可以自己下载一些插件扩充
          imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 --profile 中带上对应的操作系统,后续操作都要带上这一参数
          pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
          pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
          psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
          cmdscan:可用于查看终端记录
          notepad:查看当前展示的 notepad 文本(--profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)
          filescan:扫描所有的文件列表
          linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E 'png|jpg|gif|zip|rar|7z|pdf|txt|doc'
          dumpfiles:导出某一文件(指定虚拟地址)
          需要指定偏移量 -Q 和输出目录 -D
          mendump:提取出指定进程,常用foremost 来分离里面的文件
          需要指定进程-p [pid] 和输出目录 -D
          editbox:显示有关编辑控件(曾经编辑过的内容)的信息
          screenshot:保存基于GDI窗口的伪截屏
          clipboard:查看剪贴板信息
          iehistory:检索IE浏览器历史记录
          systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)
          hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)
          mftparser:恢复被删除的文件
          svcscan:扫描 Windows 的服务
          connscan:查看网络连接
          envars:查看环境变量
          dlllist: 列出某一进程加载的所有dll文件
          hivelist: 列出所有的注册表项及其虚拟地址和物理地址
          timeliner: 将所有操作系统事件以时间线的方式展开
    • 1、volatility.exe -f vol_easy.vmem imageinfo
      • 获取 磁盘所挂载的系统信息

      • 这个profile 翻译就是个人信息 Win7SP1x64

      • 然后扫描一下 这个磁盘下的文件

    • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 filescan>file1.txt
      • 最好使用正则进行 匹配一下 我们想要的内容

      • 题目一问的是 webshell的密码

      • web shell 后缀筛选一下 php|jsp 后缀

      • 查看到 之后我 复制一下前面的内存地址

      • 使用 dumpfiles 进行还原文件

      • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007ddf2280 -D .

        • -Q 内存地址
        • -D 存放的目录
      • 拿到之后放到 010 发现密码

  • 黑客使用的木马连接工具叫什么(比如xx.exe)?(仅首字母大写)
    • 程序的运行就需要 进程 列出进程的插件 pslist
      • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 pslist>file2.txt
    • AntSword

  • 黑客使用的木马连接工具的位置在哪里(比如C:\xxxx\xx.exe) ?
    • 查找一下所有 cmd 命令 因为cmd命令执行的时候是自带路径的 cmdline插件
      • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 cmdline>cmdline.txt

      • C:\Tools\AntSword-Loader-v4.0.3-win32-x64\AntSword.exe

  • 黑客获取到的FLAG是什么?
    • 依旧是拿到上面的文件使用正则进行搜索

    • 然后进行还原 dumpfiles 即可

    • iehistory 导出浏览记录
      • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 iehistory>iehistory.txt
  • 黑客入侵时,使用的系统用户名是什么?
    • 1 可以从 iehosty中获取

    • 也可以使用插件 :volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 systeminfo > sys.txt

  • 黑客创建隐藏账户的密码是多少?
    • 查看 蚁剑的 pid 1716 memdump进程读取插件

    • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 memdump -p 1716 -D .

      • -p 指定进程id 导出之后使用 010 打开

        因为是创建用户 所以 搜索 net user

  • 黑客首次操作靶机的关键程序是什么?
    • pstree 查看进程树 哪个程序先进行的
      • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 pstree

      • 最后得出 lsass.exe
        攻击者利用方式: lsass.exe
        转储lsass内存(使用mimikatz、procdump等工具)
        提取哈希和凭据
        密码破解或哈希传递攻击
        横向移动和权限提升

  • 该关键程序的PID是多少?
    • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007dc47600 -D .

    • pid 456

    • 方法二 就是我们知道了是 lsass.exe这个程序的问题

      • 我们之间扫描 所有和 lsass 有关的内存
        • volatility.exe -f vol_easy.vmem --profile=Win7SP1x64 yarascan -Y "lsass.exe" -C 100
          • yarascan 内存扫描插件
          • -Y 指定程序
          • -C 指定上下文字节数
        • 最后发现 pid是 456

  • 该关键程序的内存文件保存到了什么地方?
    • 根据上面的 yearscan 扫描结果

模块四:安全加固

为达到安全标准要求,各位选手需要对一台windows服务和一台Linux进行部分安 全配置加固,加固内容为账号配置、网络策略、远程服务方向,请按照任务内容中的要 求进行部署配置。

1.win安全基线加固

在win安全加固服务上,打开"控制面板"中的"管理工具"页面,完成以下4项 操作:

A.配置"本地安全策略"中"本地策略">"用户权限分配"内容下"从远程系统 强制关机"策略只允许Administrtors组进行操作

B.配置"本地安全策略"中"帐户策略"->"密码策略"内容下"密码必须符合复 杂性要求"策略为开启状态

C.配置"本地安全策略"中"帐户策略"->"密码策略"内容下"密码长度最小值" 为8个字符

D.配置"计算机管理"中"系统工具"->"本地用户和组"->"用户"内容下,选 择Guest用户右键选择属性,勾选"帐户已禁用"

E.配置完成后,点击主机桌面的"安全基线加固检查"脚本将会弹出一个windows 窗口。如基线策略 都修复完成,窗口会输出一个flag信息,将窗口输出的flag信息进行 提交。

2.关闭不必要的端口

win安全加固服务器目前不需要用户进行远程登陆操作,请关闭服务器的3389端口 服务。远程登陆服务端口关闭后,点击主机桌面的"远程登陆检查"脚本将会弹出一个 windows窗口。如3389端口关闭,窗口会输出一个flag信息,将flag提交,如窗口输 出其他信息,则说明远程登陆服务端口并未关闭

Remote Desktop Services"服务

3.文件配置 win安全加固服务为避免未检测到隐藏恶意文件的情况,请在文件夹选项中,设置 隐藏文件可见。设置完成后,可以在桌面查看到隐藏的文件"desktop_flag.txt",直接提 交此隐藏文件中的内容

4.Linux安全基线加固

在win选手主机上,使用xshell登陆linux安全加固服务器后,先执行命令"sudosu-root"(输入linxu安全加固服务admin用户密码)切换到root用户,然后完成以下6项 的安全加固操作,

任意一项没有完成则不得分:

A.确保没有空口令账号

B.确保密码最长过期天数为90天,最小过期天数为80天,最小长度为8,密码过 期警告天数为7天

C.确保不能通过root进行远程ssh登陆

D.确保uid为0的用户只有root

E.确保不存在.netrc和.rhosts文件

F.确保所有与umask相关的配置文件中,umask的值都是022

G.配置完成后,执行程序"/root/check/linux"。

如基线策略都修复完成,程序会输 出一个flag信息,将此flag提交 .

复制代码
A:
jj::1000:1000::/home/jj:/bin/sh
cc:x:1001:1001::/home/cc:/bin/sh
第二个字段不能为空。
方法二:awk -F: '($2 == "") {print $1}' /etc/passwd

B:
# 编辑密码策略配置文件
vim /etc/login.defs

# 修改以下参数:
PASS_MAX_DAYS   90
PASS_MIN_DAYS   80
PASS_MIN_LEN    8
PASS_WARN_AGE   7

# 对于已存在用户,使用chage命令
chage -M 90 -m 80 -W 7 <username>

C:
# 编辑SSH配置
vim /etc/ssh/sshd_config

# 找到并修改
PermitRootLogin no

# 重启SSH服务
systemctl restart sshd
# 或
service sshd restart

D:
# 检查uid为0的用户
awk -F: '($3 == 0) {print $1}' /etc/passwd

# 如果有其他uid为0的用户,修改其UID
usermod -u <new_uid> <username>

E:
# 查找并删除这些文件
find / -name ".netrc" -type f -delete
find / -name ".rhosts" -type f -delete

# 或者备份后删除
find / -name ".netrc" -exec mv {} {}.bak \;
find / -name ".rhosts" -exec mv {} {}.bak \;


F: 确保所有与umask相关的配置文件中,umask的值都是022 
# 检查所有umask相关配置文件
grep -r "umask" /etc/ /root/ ~/

# 修改主要配置文件
vim /etc/profile
# 添加或修改
umask 022

vim /etc/bashrc
# 添加或修改  
umask 022

vim /etc/login.defs
# 确保有
UMASK 022

# 重新加载配置
source /etc/profile

5.Linux网络策略加固

在win选手主机上,使用xshell登陆linux安全加固服务器后,先执行命令"sudosu-root"(输入linxu安全加固服务admin用户密码)切换到root用户,然后完成以下2项 的安全加固操作,任意一项没有完成则不得分

A.Linux服务器需要尽量避免在内网中被发现,请使用iptables禁止icmp协议,降 低linux服务器被发现的几率 B.Linux服务器本地搭建了一个redis服务,请用iptables或其他方法禁止任何外部 网络来访问redis的默认服务端口,但本地可以访问

C.配置完成后,执行程序"/root/check/network"。

如网络策略配置无误,窗口会输 出一个flag信息,将flag提交

复制代码
A:
# 使用iptables禁止ICMP
iptables -A INPUT -p icmp --icmp-type any -j DROP
iptables -A OUTPUT -p icmp --icmp-type any -j DROP

# 或者更严格地禁止所有ICMP
iptables -A INPUT -p icmp -j DROP
iptables -A OUTPUT -p icmp -j DROP

# 保存iptables规则
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables


B:
# 允许本地访问Redis
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT
iptables -A INPUT -s ::1 -p tcp --dport 6379 -j ACCEPT

# 禁止其他所有IP访问Redis端口
iptables -A INPUT -p tcp --dport 6379 -j DROP

# 保存规则
service iptables save

----------------------------
# 编辑Redis配置文件
vim /etc/redis/redis.conf
# 或
vim /etc/redis.conf

# 修改绑定地址,只监听本地
bind 127.0.0.1 ::1

# 重启Redis服务
systemctl restart redis
# 或
service redis restart


iptables -L -n

6.nginx安全加固

Linux服务器部署了一个nginx服务,请修改nginx配置文件,使nginx禁止访问 /backup路径下的所有文件。配置完成后,先执行命令"sudosu-root"(输入admin用户 密码),然后执行程序"/root/check/nginx"。如配置无误,程序会输出标题为"Nginx安 全加固"的flag信息,将flag提交

复制代码
# 编辑配置文件
vim /etc/nginx/nginx.conf
# 或
vim /etc/nginx/conf.d/default.conf

server {
    listen 80;
    server_name _;
    
    # 其他配置...
    
    # 禁止访问/backup路径
    location /backup {
        deny all;
        return 403;
    }
    
    # 或者更严格的配置
    location ~* ^/backup {
        deny all;
        return 404;
    }
}

7.nginx安全加固2

Linux服务器部署了一个nginx服务,请修改nginx配置文件,使nginx只允许GET、 POST请求(注:其他请求方式不返回200状态码即算完成要求)。配置完成后,先执 行命令"sudosu-root"(输入admin用户密码),然后执行程序"/root/check/nginx"。如 配置无误,程序会输出标题为"Nginx安全加固2"的flag信息,将flag提交

复制代码
# 测试配置文件语法
nginx -t

# 重启Nginx服务
systemctl restart nginx
# 或
service nginx restart



server {
    listen 80;
    server_name _;
    
    # 限制HTTP请求方法,只允许GET和POST
    if ($request_method !~ ^(GET|POST)$ ) {
        return 405;
    }
    
    # 或者使用location块中的limit_except(更推荐)
    location / {
        limit_except GET POST {
            deny all;
        }
        # 其他配置...
    }
    
    # 其他配置...
}

模块五:应急响应

复制代码
历史命令,文件

cron ,任务

网络连接

cpu,内存进程

webshell,马子

异常命令,系统进程

你作为一个企业的信息安全工程师,收到了一条Linux主机失陷的告警信息,经初 步研判为挖矿木马感染。现需要你登陆到失陷主机上,清理异常的进程和文件,使失陷 主机恢复正常运行。

1.查找异常进程所在目录

请分析失陷主机上的进程,查找占用CPU最高的进程文件所在的目录路径(注: 只需要进程文件所在的目录路径,不定位到文件,路径末尾不要添加/号),并将目录路 径进行md5加密后,将小写的md5密文进行作为flag信息进行提交,提交格式为 flag{MD5小写},例如假设目录路径是/opt,那么提交范例为: flag{68ab1268abb7e5f5688810968df97d6b}

复制代码
top   cpu最高
找到进程的pid 
ls -al /proc/<pid>/exe
例:找到command find / -name "kthread*" 2>/dev/null

ss -lntup #快速排查端口占用和服务进程
# 查看 CPU 占用最高的前 5 个进程
ps aux --sort=-%cpu | head -5

复制代码
# 查看指定 PID 的进程详情
$ lsof -p 12345
# 输出示例
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    12345 www-data  6u  IPv4  123456      0t0  TCP *:80 (LISTEN)
nginx    12345 www-data  7r   REG   8,1    12345  98765 /var/log/nginx/error.log
# 假设 PID 为 1234
PID=$(ps aux --sort=-%cpu | grep -v USER | head -1 | awk '{print $2}')
ls -l /proc/$PID/exe

#查看所有进程加载的 .so 文件
lsof -p 1 -c ".*" | grep .so
# 针对特定进程 (如 PID 1234)
lsof -p 1234 | grep .so

2.异常环境变量检测

由于失陷主机登陆时,会自动执行一个异常的二进制文件。**请查看失陷主机的环境 变量相关的profile配置文件,**从profile配置文件内容中,找到这个执行的异常二进制 文件,并提交这个文件的名称(注:只需要文件的名称即可)。提交时将文件名称进行 md5加密后,将小写的md5密文进行作为flag信息进行提交,提交格式为flag{MD5小 写},例如假设文件名称是name,那么提交范例为: flag{b068931cc450442b63f5b3d276ea4297}

复制代码
cat /etc/profile

/tmp/.hidden/evil_bin &

找文件名

# 查看 /etc/profile 及其包含的 profile.d 目录
cat /etc/profile | grep -i "bin\|exe\|path"
ls -l /etc/profile.d/

# 检查 .bash_profile 和 .profile
cat ~/.bash_profile | grep -i "bin\|exe\|path"
cat ~/.profile | grep -i "bin\|exe\|path"
# 检查 .bashrc (非登录式 shell 也会读取)
cat ~/.bashrc | grep -i "bin\|exe\|path"

grep -E "exec|&|nohup|sleep|.*bin.*" /etc/profile筛选一下

3.寻找异常守护进程

当前关闭失陷主机占用CPU最高的进程时,该进程又会再次启动,很明显失陷主 机存在一个守护进程来确保占用CPU最高的进程不能被关闭。请寻找这个异常的守护 进程,并提交这个守护进程文件名称(注:只需要文件的名称即可)。提交时将文件名 称进行md5加密后,将小写的md5密文进行作为flag信息进行提交,提交格式为 flag{MD5小写},例如文件名称是name,那么提交范例为: flag{b068931cc450442b63f5b3d276ea4297 }

复制代码
crontab -l  守护进程

服务支持:
systemctl list-units --type=service
systemctl list-unit-files | grep enabled
systemctl list-units --type=service | grep -v systemd

systemctl list-units --type=service --state=running
systemctl cat xxx.service


init脚本 ( init ,rc* )
ls /etc/init.d/
ls /etc/rc*.d/S*

/etc/crontab
/etc/cron.d/*
/etc/cron.*
都检查一下

# 查找所有包含 "service" 的服务文件
ls -l /etc/systemd/system/*.service
# 检查服务状态
systemctl list-unit-files | grep .service
# 查看 root 用户的定时任务
crontab -u root -l
# 检查系统级定时任务
ls -l /etc/cron*
# 查看 rc.local 内容
cat /etc/rc.local
# 常见的异常行示例:
# /usr/bin/minerd > /dev/null 2>&1 &

4.清理所有异常进程

请详细检查失陷主机的开机启动项、profile、计划任务等配置文件,并根据配置文 件中的线索删除恶意文件,停止异常占用CPU的进程。当你确认所有的异常进程和文 件都清理完成后,执行命令/root/flags,执行后,flags程序将会在等待60秒后完成启动。 如失陷主机所有异常清理完成,flags程序将会输出flag信息,请提交此flag信息。如 任意一项异常进程或文件未清理完成,则会输出"异常进程或文件未处理完毕",请继 续进行清理

复制代码
杀死异常进程,删除异常文件,清除crontab,清除profile中的异常行。

然后运行 /root/flags,等待60秒后得到flag。

杀异常进程
kill -9 <pid>

删除恶意文件
rm -f /tmp/.hidden/miner
rm -f /tmp/.hidden/evil_bin

清除定时
# 删系统级定时任务
rm -f /etc/cron.d/miner
# 清空整个 crontab
crontab -r


清除 systemd 服务
systemctl disable miner.service
systemctl stop miner.service
rm -f /etc/systemd/system/miner.service

5.异常webshell文件分析

在此次的入侵过程中,黑客向失陷主机上传过webshell文件。请分析失陷主机上监 测到的流量包/var/pacp/web_http.pcap,找到黑客上传的webshell木马文件名(注:文件 名包括了文件的扩展名),并将文件名称进行md5加密后,将小写的md5密文进行作 为flag信息进行提交,提交格式为flag{MD5小写},例如假设黑客上传的webshell木马 文件名name,那么提交范例为:flag{b068931cc450442b63f5b3d276ea4297}

复制代码
流量包
过滤HTTP请求,寻找上传文件的POST请求,找到上传的文件名,比如 shell.php
webshell的文件名。

6.异常webshell文件分析2

在此次的入侵过程中,黑客向失陷主机上传的webshell文件在HTTP数据传输过程 中进行了加密操作。请分析失陷主机上监测到的流量包/var/pacp/web_http.pcap,找到黑 客上传的webshell木马文件解密密钥信息,并将解密密钥信息进行md5加密后,将小 写的md5密文进行作为flag信息进行提交,提交格式为flag{MD5小写},例如假设 webshell木马文件解密密钥信息为info,那么提交范例为: flag{caf9b6b99962bf5c2264824231d7a40c}

复制代码
在同一个上传请求中,可能有一个参数如 key=abc123 用于解密,那么密钥就是 abc123

key=xxx     类比哥斯拉,冰蝎

7.黑客行为分析

在此次的入侵过程中,黑客曾连接到webshell文件进行过恶意操作。请分析失陷主 机上监测到的流量包/var/pacp/web_http.pcap找到黑客连接webshell后执行的第一条命 令,将第一条命令进行md5加密后,将小写的md5密文进行作为flag信息进行提交, 提交格式为flag{MD5小写},例如假设黑客连接webshell后执行的第一条命令为cmd, 那么提交范例为:flag{dfff0a7fa1a55c8c1a4966c19f6da452}

复制代码
黑客连接上webshell之后,执行的第一条命令。

pass=id
pass=whoami
命令

8.黑客shell权限分析

在此次的入侵过程中,黑客曾连接到webshell文件进行过恶意操作。请分析失陷主 机上监测到的流量包/var/pacp/web_http.pcap,分析黑客连接到webshell后的shell用户权 限。并将shell用户名进行md5加密后,将小写的md5密文进行作为flag信息进行提交, 提交格式为flag{MD5小写},例如假设黑客连接到webshell后的shell用户为user,那 么提交范例为:flag{ee11cbb19052e40b07aac0ca060c23ee}

复制代码
webshell连接之后的 用户名。
看连接后的基本信息,或黑客执行whoami ,id 命令的回显。

9.黑客的文件操作分析

在此次的入侵过程中,黑客曾连接到webshell文件上传过文件flag.txt。请分析失陷 主机上监测到的流量包/var/pacp/web_http.pcap,拿到黑客上传文件flag.txt中的内容并提 交。

复制代码
webshell之后上传的
flag.txt      搜索
分析

10.黑客的提权行为分析

在此次的入侵过程中,黑客曾连接到webshell文件进行过一次提权操作,请分析失 陷主机上监测到的流量包/var/pacp/web_http.pcap,获取黑客进行提权操作中使用到的命 令(注:只需要命令,不需要命令后面的参数等信息),将命令进行md5加密后,将小 写的md5密文进行作为flag信息进行提交,提交格式为flag{MD5小写},例如假设黑 客连接webshell后执行第一条命令为cmd,那么提交范例为: flag{dfff0a7fa1a55c8c1a4966c19f6da452}。

复制代码
提权操作的命令  命令!
find
sudo 

su、chmod、chown、passwd......

11.黑客遗留后门分析 在此次的入侵过程中,黑客曾连接到webshell文件进行了后门IP反弹shell操作, 请分析失陷主机上监测到的流量包/var/pacp/web_http.pcap,获取黑客后门反弹shell外连 的IP,并将反弹shell外连的IP进行md5加密后,将小写的md5密文进行作为flag信 息进行提交,提交格式为flag{MD5小写},例如假设黑客连接到webshell后的shell用 户为192.168.1.1,那么提交范例为:flag{66efff4c945d3c3b87fc271b47d456db}

复制代码
黑客会执行反弹shell的命令的。

在TCP流中查找连接的外部IP。

bash -i >&
nc 
curl 
wget 
php -r '  '

nc 本地IP加端口,id后有返回值,后门端口。

/etc/rc 开机启动

grep -Pnir:递归搜索的强大命令组合。它结合了基础的文本查找功能与高级的正则表达式支持,常用于日志分析、代码审计或配置文件排查

docker run -v /:/mnt --rm -it alpine chroot /mnt sh 直接操作宿主机文件系统。 拥有宿主机的 root 权限

echo 'Z:13bMppLHt$823qI.XBc648gDUJFvNCz/:0:0:asdasd:/root:/bin/bash' >>/etc/passwd


模块六:日志分析

复制代码
作为安全工程师,分析日志是否存在安全风险事件是企业业务安全巡检中的一环。
现有一台Linux服务器,该服务器上分别存在两份中间件日志/var/log/httpd/access_log
和/var/log/nginx/www.zwxa.com_access.log,请分析这两份日志,并按照任务内容中的
要求提交分析出的信息。

同时,这台linux服务也会将用户相关的操作记录到日志secure中,默认情况下,
日志会通过轮替的方式保留日志secure至少180天以上。现这台Linux服务器上在目录
/var/log/secure_anaylist下保留了180天之内所有的用户相关操作日志,请同步分析这个
目录下所有的secure日志,并按照任务内容中的要求提交分析出的信息。

1.apache服务中,访问量最高的IP信息 访问web服务频率较大的IP往往需要重点关注,请分析日志/var/log/httpd/access_log 找到访问量最高的IP。并将ip进行md5加密后,将小写的md5密文进行作为flag信息 进行提交,提交格式为flag{MD5小写},例如假设访问量最高的IP是192.168.1.1,那 么提交范例为:flag{66efff4c945d3c3b87fc271b47d456db}

复制代码
root@kiko:/var/log/apache2# cat access.log | awk '{print $1}'| sort | uniq -c | sort -nr
   1092 18.176.52.175
    763 104.194.8.36
    731 43.198.79.103
    589 18.183.192.249
    456 23.81.40.155
    321 31.223.184.246
    230 95.40.35.45
    217 51.79.67.180
    191 82.117.226.200
    160 51.68.227.243
    145 54.37.74.147
    117 192.187.98.226
    107 148.113.173.7
      5 148.113.182.56
      4 112.224.169.30

2.apache服务中的恶意访问情况 访问web服务的客户端中,可能会发送恶意的请求参数,这些恶意请求需要安全工 程师定期进行进行统计、记录和分析。

请分析日志/var/log/httpd/access_log是否有包含 eval、cmd、func、cgi-bin、jndi、excute、%20、system、exec、passthru、shell_exec、popen、 proc_open这些常见恶意请求关键词的请求记录(注:包含恶意请求关键词的请求记录 即为恶意请求),并找到恶意请求访问频率最高的path路径(注:path路径不包含网址、 分隔符和查询参数,/path中的"/"不是分隔符),并将path路径进行md5加密后,将 小写的md5密文进行作为flag信息进行提交,提交格式为flag{MD5小写},例如假设 path路径是/path,那么提交范例为:flag{c55cc3282a38277657035e8e64b48b60}

复制代码
 cat access.log | awk '{print $7}'| sort | uniq -c | sort -n

3.nginx服务中,访问量最高的IP信息 访问web服务频率较大的IP往往需要重点关注,请分析日志 /var/log/nginx/www.zwxa.com_access.log统计访问量最高IP对web服务的访问次数。并 将次数进行md5加密后,将小写的md5密文进行作为flag信息进行提交,提交格式为 flag{MD5小写},例如假设访问次数是10,那么提交范例为: flag{d3d9446802a44259755d38e6d163e820}

复制代码
 cat access.log | awk '{print $1}'|grep "18.176.52.175"|  sort | uniq -c | sort -n
   1130 18.176.52.175

4.nginx服务中的扫描探测情况

攻击者往往会使用HEAD请求来探测web服务的路径是否存在,作为安全工程师, 你需要初步了解web服务被外部扫描的情况。请分析日志 /var/log/nginx/www.zwxa.com_access.log找到web服务被HEAD请求次数最高的path路 径信息。并将path路径进行md5加密后,将小写的md5密文进行作为flag信息进行提 交,提交格式为flag{MD5小写},例如假设path路径是/path,那么提交范例为: flag{c55cc3282a38277657035e8e64b48b60}

复制代码
root@kiko:/var/log/apache2# cat access.log| grep "HEAD" | awk '{print $7}'|  sort | uniq -c | sort -n
      1 /
      1 /admin
      1 /.git/FETCH_HEAD
      1 /.git/HEAD
      1 /me
      1 /you
      2 /baba
      3 /mama

5.nginx中的后台登陆服务 nginx服务在path路径/login和/admin/login都提供了后台登陆服务,并使用POST 方式来传递登陆数据(比如用户名、密码等),请分析日志 /var/log/nginx/www.zwxa.com_access.log找到进行后台登陆操作次数最多的IP。并将ip 进行md5加密后,将小写的md5密文进行作为flag信息进行提交,提交格式为flag{MD5 小写},例如假设访问量最高的IP是192.168.1.1,那么提交范例为: flag{66efff4c945d3c3b87fc271b47d456db}

后台登录次数最多的ip POST

6.nginx中的后台操作记录 在nginx服务中,以/admin开头的path路径都是后台操作,同时后台参数都是已 POST请求来传递数据。请分析日志/var/log/nginx/www.zwxa.com_access.log找到除后台 登陆外,频率最多的后台操作,并提交此后台操作访问的详细path路径信息。提交时将 详细path路径信息进行md5加密后,将小写的md5密文进行作为flag信息进行提交, 提交格式为flag{MD5小写},例如假设详细path路径信息是/path,那么提交范例为: flag{c55cc3282a38277657035e8e64b48b60}

复制代码
/admin

7.定位有哪些IP在爆破 作为一个安全工程师,你需要知道有哪些IP在暴力破解服务器的远程登陆密码。 请分析目录/var/log/secure_anaylist下所有的secure文件,找到登陆失败次数最多的IP。 并将ip进行md5加密后,将小写的md5密文进行作为flag信息进行提交,提交格式为 flag{MD5小写},例如假设登陆失败次数最多的IP是192.168.1.1,那么提交范例为: flag{66efff4c945d3c3b87fc271b47d456db}

复制代码
grep failed  类似
cat xxx | grep "Failed" | awk   | sort | uniq -c | xxxx
登录失败次数最多的ip

8.定位爆破用户名字典 在排查远程登陆暴力破解时,除了IP信息外,同时需要了解外部用户在针对什么 用户名进行爆破。分析目录/var/log/secure_anaylist下所有的secure文件,找到登陆失败 次数最多的用户名。并将用户名进行md5加密后,将小写的md5密文进行作为flag信 息进行提交,提交格式为flag{MD5小写},例如假设登陆用户名是user,那么提交范例 为:flag{ee11cbb19052e40b07aac0ca060c23ee}

复制代码
登陆失败 次数最多的用户名 
cat ... |grep 'Failed'|awk '{print $9}'|sort|uniq -c|sort -nr

Apr 21 13:19:47 192.168.1.100 sshd[1033]: Failed password for oracle from 61.177.172.136 port 22 ssh2
Oct 15 11:48:25 192.168.1.100 sshd[1034]: Failed password for root from 103.21.244.15 port 22 ssh2
Jan 28 23:36:05 192.168.1.100 sshd[1035]: Failed password for root from 61.177.172.136 port 22 ssh2
Jul 3 02:54:03 192.168.1.100 sshd[1036]: Failed password for guest from 61.177.172.136 port 22 ssh2
Aug 12 11:20:23 192.168.1.100 sshd[1037]: Failed password for admin from 61.177.172.136 port 22 ssh2
Aug 4 08:57:33 192.168.1.100 sshd[1038]: Failed password for root from 61.177.172.136 port 22 ssh2
Jan 27 03:22:29 192.168.1.100 sshd[1039]: Failed password for ubuntu from 112.85.42.227 port 22 ssh2
Nov 12 01:24:17 192.168.1.100 sshd[1040]: Failed password for ubuntu from 112.85.42.227 port 22 ssh2
Mar 27 20:20:23 192.168.1.100 sshd[1041]: Failed password for guest from 185.163.126.99 port 22 ssh2
Nov 24 16:49:13 192.168.1.100 sshd[1042]: Failed password for user from 103.21.244.15 port 22 ssh2
Mar 25 20:24:04 192.168.1.100 sshd[1043]: Failed password for guest from 103.21.244.15 port 22 ssh2
Dec 4 09:02:20 192.168.1.100 sshd[1044]: Failed password for user from 103.21.244.15 port 22 ssh2
Mar 26 08:30:37 192.168.1.100 sshd[1045]: Failed password for user from 45.155.205.233 port 22 ssh2
Apr 4 16:15:08 192.168.1.100 sshd[1046]: Failed password for ubuntu from 185.163.126.99 port 22 ssh2

9.定位增加的用户 linux服务器在今年5月曾经添加过一个用户,请分析目录/var/log/secure_anaylist 下所有的secure文件,找到这个用户名。并将用户名进行md5加密后,将小写的md5 密文进行作为flag信息进行提交,提交格式为flag{MD5小写},例如假设登陆用户名是 user,那么提交范例为:flag{ee11cbb19052e40b07aac0ca060c23ee}

复制代码
5月份添加的用户

May 15 10:23:15 192.168.1.100 useradd[2045]: new user: name=hacker, UID=1001, GID=1001, home=/home/hacker, shell=/bin/bash

cat ...|grep "useradd"

10.定位经常登陆的IP linux服务器的远程ssh登陆地域通常是固定的,请分析目录/var/log/secure_anaylist 下所有的secure文件,找到登陆成功次数最多的IP。并将ip进行md5加密后,将小写 的md5密文进行作为flag信息进行提交,提交格式为flag{MD5小写},例如假设登陆 成功次数最多的IP是192.168.1.1,那么提交范例为: flag{66efff4c945d3c3b87fc271b47d456db}

复制代码
cat ... |grep 'Accepted'|awk '{print $11}'|sort|uniq -c|sort -nr

strings 473lt.exe_241125_151443.dmp | grep uc | grep http

模块七:渗透测试

ctf : rce 审计

docker !!!

1.ZWPHP 服务器http://192.168.239.131:83部署有主机管理系统,请分析并利用找到的漏洞拿 到flag。(备注:flag文件路径为:"/flag")

php

2.SSTI 在网址http://192.168.239.131:82找到漏洞并利用找到的漏洞获取flag文件信息(备 注:flag文件路径为:"/flag")

SSTI python

flask

pip install fengjin

python -m fengjin webui

3.CMPHP 在网址http://192.168.239.131:84页面存在漏洞,请找到并利用漏洞获取flag文件信 息(备注:flag文件路径为:"/flag")

代码审计 php

4.FTP密码破解

内网其中一个服务器中存在ftp服务,其管理的一个用户admin密码过于简单,请 尝试破解,并且在破解完成后,使用admin用户登陆ftp拿到flag.txt文件的内容并提交。

暴力破解


总结

懂的多,很简单,就好了。


相关推荐
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全