# Task 3 - OS and account information
Trong trường hợp của Windows, chúng ta đã xác định rằng Windows Registry chứa thông tin về máy Windows. Đối với hệ thống Linux , mọi thứ đều được lưu trữ trong file. Do đó, để xác định các forensics artifacts, chúng ta sẽ cần biết vị trí của các tệp này và cách đọc chúng. Dưới đây, chúng ta sẽ bắt đầu bằng cách xác định System information trên máy chủ Linux .
OS release information
----------------------
Để tìm thông tin phát hành hệ điều hành , chúng ta có thể sử dụng `cat` để đọc tệp có tại `/etc/os-release`. Để biết thêm về `cat`, bạn có thể đọc trang man của nó.
`man cat`
```shell-session
user@machine$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
```
User accounts
-------------
Tệp `/etc/passwd`chứa thông tin về tài khoản người dùng tồn tại trên hệ thống Linux . Chúng ta có thể sử dụng `cat` để đọc file này. Đầu ra chứa 7 trường được phân tách bằng dấu hai chấm, mô tả username, password information, user id (uid), group id (gid), description, home directory information, và default shell thực thi khi người dùng đăng nhập. Có thể nhận thấy rằng giống như Windows, tài khoản người dùng do người dùng tạo có uids 1000 trở lên. Bạn có thể sử dụng lệnh sau để làm cho nó dễ đọc hơn:
`cat /etc/passwd| column -t -s :`
```shell-session
user@machine$cat /etc/passwd| column -t -s :
root x 0 0 root /root /bin/bash
daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin
bin x 2 2 bin /bin /usr/sbin/nologin
sys x 3 3 sys /dev /usr/sbin/nologin
sync x 4 65534 sync /bin /bin/sync
games x 5 60 games /usr/games /usr/sbin/nologin
.
.
.
.
.
ubuntu x 1000 1000 Ubuntu /home/ubuntu /bin/bash
pulse x 123 130 PulseAudio daemon,,, /var/run/pulse /usr/sbin/nologin
tryhackme x 1001 1001 tryhackme,,, /home/tryhackme /bin/bash
```
Trong lệnh trên, chúng ta có thể xem thông tin về người dùng Ubuntu. Tên người dùng là ubuntu, trường thông tin mật khẩu của nó hiển thị `x`, biểu thị rằng thông tin mật khẩu được lưu trữ trong `/etc/shadow`. Uid của người dùng là 1000. Gid cũng là 1000. Phần mô tả, thường chứa tên đầy đủ hoặc thông tin liên hệ, có đề cập đến tên Ubuntu. Thư mục chính được đặt thành `/home/ubuntu`, và shell mặc định được đặt thành `/bin/bash`. Chúng ta cũng có thể xem thông tin tương tự về những người dùng khác từ tệp.
Group Information
-----------------
Tệp `/etc/group`chứa thông tin về các nhóm người dùng khác nhau có trên host. Nó có thể được đọc bằng `cat`.
```shell-session
user@machine$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,ubuntu
tty:x:5:syslog
```
Chúng ta có thể thấy rằng người dùng `ubuntu`thuộc nhóm `adm` có mật khẩu được lưu trong tệp `/etc/shadow`, được biểu thị bằng `x`. Gid là 4 và nhóm chứa 2 người dùng, Syslog và ubuntu.
Sudoers List
------------
Máy chủ Linux chỉ cho phép những người dùng đó nâng cao các đặc quyền `sudo`có trong danh sách Sudoers. Danh sách này được lưu trữ trong tệp `/etc/sudoers`và có thể được đọc bằng `cat`. Bạn sẽ cần nâng cao đặc quyền để truy cập tệp này.
```shell-session
user@machine$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
```
Login information
-----------------
Trong thư mục `/var/log`, chúng ta có thể tìm thấy các loại tệp nhật ký bao gồm `wtmp`và `btmp`. Tệp `btmp` lưu thông tin về các lần đăng nhập không thành công, đồng thời `wtmp` lưu giữ dữ liệu lịch sử của các lần đăng nhập. Những tệp này không phải là tệp văn bản thông thường có thể được đọc bằng `cat`, `less`hoặc `vim`; thay vào đó, chúng là các tệp nhị phân, phải được đọc bằng `last`. Bạn có thể tìm hiểu thêm về `last` bằng cách đọc trang man của nó.
`man last`
```shell-session
user@machine$ sudo last -f /var/log/wtmp
reboot system boot 5.4.0-1029-aws Tue Mar 29 17:28 still running
reboot system boot 5.4.0-1029-aws Tue Mar 29 04:46 - 15:52 (11:05)
reboot system boot 5.4.0-1029-aws Mon Mar 28 01:35 - 01:51 (1+00:16)
wtmp begins Mon Mar 28 01:35:10 2022
```
Authentication logs
-------------------
Mọi người dùng xác thực trên máy chủ Linux đều được ghi vào nhật ký xác thực. Nhật ký xác thực là một tệp được đặt ở vị trí `/var/log/auth.log`. Nó có thể được đọc bằng `cat`, tuy nhiên, với kích thước của tệp, chúng ta có thể sử dụng `tail`, `head`hoặc `more` `less` để dễ đọc hơn.
```shell-session
user@machine$ cat /var/log/auth.log |tail
Mar 29 17:28:48 tryhackme gnome-keyring-daemon[989]: The PKCS#11 component was already initialized
Mar 29 17:28:48 tryhackme gnome-keyring-daemon[989]: The SSH agent was already initialized
Mar 29 17:28:49 tryhackme polkitd(authority=local): Registered Authentication Agent for unix-session:2 (system bus name :1.73 [/usr/lib/x86_64-linux-gnu/polkit-mate/polkit-mate-authentication-agent-1], object path /org/mate/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
Mar 29 17:28:58 tryhackme pkexec[1618]: ubuntu: Error executing command as another user: Not authorized [USER=root] [TTY=unknown] [CWD=/home/ubuntu] [COMMAND=/usr/lib/update-notifier/package-system-locked]
Mar 29 17:29:09 tryhackme dbus-daemon[548]: [system] Failed to activate service 'org.bluez': timed out (service_start_timeout=25000ms)
Mar 29 17:30:01 tryhackme CRON[1679]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 17:30:01 tryhackme CRON[1679]: pam_unix(cron:session): session closed for user root
Mar 29 17:49:52 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/cat /etc/sudoers
Mar 29 17:49:52 tryhackme sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Mar 29 17:49:52 tryhackme sudo: pam_unix(sudo:session): session closed for user root
```
Trong tệp nhật ký ở trên, chúng ta có thể thấy rằng người dùng Ubuntu đã nâng cao đặc quyền vào lúc `Mar 29 17:49:52`sử dụng `sudo`để chạy lệnh `cat /etc/sudoers`. Chúng ta có thể thấy các sự kiện đã mở và đóng phiên tiếp theo dành cho người dùng root, đây là kết quả của việc leo thang đặc quyền nêu trên.
Trả lời câu hỏi
----
* *Which two users are the members of the group `audio`?*
2 người dùng nào là thành viên của group audio, tệp `/etc/group`chứa thông tin về các nhóm người dùng, vì thế mình dùng lệnh `cat /etc/group | grep 'audio'` để đọc nội dung có trong group và tìm nhóm có tên là audio.

=> ubuntu,pulse
* *In the attached VM, there is a user account named tryhackme. What is the uid of this account?*
Trong máy ảo, có 1 tài khoản tên là tryhackme, UID của tài khoản đó là gì? Tệp `/etc/passwd` chứa thông tin về tài khoản người dùng, vì thế để biết uid của tài khoản tên tryhackme, mình sẽ dùng lệnh `cat /etc/passwd | grep 'tryhackme'`.

hoặc để dễ đọc hơn thì mình sử dụng lệnh `cat /etc/passwd | column -t -s : | grep 'tryhackme'` như được nêu ở trên.

Nhớ lại 7 trường username, password information, user id (uid), group id (gid), description, home directory information, và default shell thực thi khi người dùng đăng nhập được liệt kê ở trên, ta có thể đọc được UID của user tryhackme là 1001.
=> 1001
* *A session was started on this machine on Sat Apr 16 20:10. How long did this session last?*
Có một phiên đã được khởi chạy trên máy vào Sat Apr 16 20:10, phiên này kéo dài bao lâu? Mình sẽ sử dụng `sudo last -f /var/log/wtmp` để kiểm tra lịch sử của các lần đăng nhập thành công, nhớ rằng tệp wtmp là tệp nhị phân nên ta đọc bằng `last`.

hoặc sử dụng `sudo last -f /var/log/wtmp | grep 'Sat Apr 16 20:10'`

Phiên kéo dài trong 01:32.
=> 01:32
# Task 4 - System Configuration
Hostname
--------
Tên máy chủ được lưu trữ trong `/etc/hostname`. Nó có thể được truy cập bằng cách sử dụng `cat`.
```shell-session
user@machine$ cat /etc/hostname
tryhackme
```
Timezone
--------
Thông tin múi giờ là một phần thông tin quan trọng cung cấp chỉ báo về vị trí chung của thiết bị hoặc khoảng thời gian mà thiết bị có thể được sử dụng. Thông tin múi giờ có thể được tìm thấy tại `/etc/timezone`và có thể được đọc bằng `cat`.
```shell-session
user@machine$ cat /etc/timezone
Etc/UTC
```
Network Configuration
---------------------
Để tìm thông tin về các giao diện mạng, chúng ta có thể dùng `cat`, `/etc/network/interfaces`. Đầu ra trên máy của bạn có thể khác với đầu ra được hiển thị ở đây, tùy thuộc vào cấu hình của bạn.
```shell-session
user@machine$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
```
Tương tự, để tìm thông tin về địa chỉ MAC và IP của các giao diện khác nhau, chúng ta có thể sử dụng `ip`. Để tìm hiểu thêm về `ip`, chúng ta có thể xem `man` của nó.
`man ip`
```shell-session
user@machine$ ip address show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 02:20:61:f1:3c:e9 brd ff:ff:ff:ff:ff:ff
inet 10.10.95.252/16 brd 10.10.255.255 scope global dynamic eth0
valid_lft 2522sec preferred_lft 2522sec
inet6 fe80::20:61ff:fef1:3ce9/64 scope link
valid_lft forever preferred_lft forever
```
Active network connections
--------------------------
Chúng ta có thể sử dụng `netstat` để tìm các kết nối mạng đang hoạt động trên máy chủ Linux . Chúng ta có thể tìm hiểu thêm về `netstat` này bằng cách đọc `man` của nó.
`man netstat`
```shell-session
user@machine$ netstat -natp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN 829/Xtigervnc
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:60602 127.0.0.1:5901 ESTABLISHED -
tcp 0 0 10.10.95.252:57432 18.66.171.77:443 ESTABLISHED -
tcp 0 0 10.10.95.252:80 10.100.1.33:51934 ESTABLISHED -
tcp 0 0 127.0.0.1:5901 127.0.0.1:60602 ESTABLISHED 829/Xtigervnc
tcp6 0 0 ::1:5901 :::* LISTEN 829/Xtigervnc
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
```
Running processes
-----------------
Nếu thực hiện điều tra trên một hệ thống đang hoạt động, việc kiểm tra các tiến trình đang chạy sẽ rất hữu ích. `ps` hiển thị chi tiết về các tiến trình đang chạy. Để tìm hiểu về `ps` chúng ta có thể sử dụng `man`.
`man ps`
```shell-session
user@machine$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 729 0.0 0.0 7352 2212 ttyS0 Ss+ 17:28 0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220
root 738 0.0 0.0 5828 1844 tty1 Ss+ 17:28 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root 755 0.0 1.5 272084 63736 tty7 Ssl+ 17:28 0:00 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
ubuntu 1672 0.0 0.1 5264 4588 pts/0 Ss 17:29 0:00 bash
ubuntu 1985 0.0 0.0 5892 2872 pts/0 R+ 17:40 0:00 ps au
```
DNS information
---------------
Tệp `/etc/hosts`chứa cấu hình để gán tên DNS . Chúng ta có thể sử dụng `cat` để đọc file host. Để tìm hiểu thêm về file host, chúng ta có thể sử dụng `man `.
`man hosts`
```shell-session
user@machine$ cat /etc/hosts
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
```
Thông tin về máy chủ DNS mà máy chủ Linux trao đổi để phân giải DNS được lưu trữ trong tệp `resolv.conf`. Vị trí của nó là `/etc/resolv.conf`. Chúng ta có thể sử dụng `cat` để đọc file này.
```shell-session
user@machine$ cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 127.0.0.53
options edns0 trust-ad
search eu-west-1.compute.internal
```
Trả lời câu hỏi
---
* *What is the hostname of the attached VM?*
Để biết hostname của máy ảo này là gì, mình `cat /etc/hostname`

=> Linux4n6
* *What is the timezone of the attached VM?*
Timezone của máy này là gì, tương tự mình `cat /etc/timezone`

=> Asia/Karachi
* *What program is listening on the address 127.0.0.1:5901?*
Chương trình nào đang ở trạng thái listen ở địa chỉ 127.0.0.1:5901? Mình sử dụng `netstat` để tìm các kết nối mạng đang hoạt động, cụ thể là `netstat -natp | grep '127.0.0.1:5901'`, sau đó nhìn vào IP address, port, state, và Program name.

=> Xtigervnc
* *What is the full path of this program?*
Đường dẫn đầy đủ của chương trình này là gì? Mình sử dụng `ps` để hiển thị chi tiết về các tiến trình đang chạy, cụ thể là `ps aux | grep 'Xtigervnc'` để đầu ra không bị quá nhiều.

=> /usr/bin/Xtigervnc
# Task 5 - Persistence mechanisms
Persistence mechanisms là cách mà chương trình có thể tồn tại sau khi khởi động lại hệ thống. Điều này giúp tác giả phần mềm độc hại giữ được quyền truy cập vào hệ thống ngay cả khi hệ thống được khởi động lại.
Cron jobs
---------
Cron jobs là các lệnh chạy định kỳ sau một khoảng thời gian nhất định. Máy chủ Linux duy trì danh sách các công việc Cron trong một tệp có tại `/etc/crontab`. Chúng ta có thể đọc tập tin bằng `cat`.
```shell-session
user@machine$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
```
Có thể thấy, tệp chứa thông tin về khoảng thời gian sau đó lệnh phải chạy, tên người dùng chạy lệnh và chính lệnh đó. Nó cũng có thể chứa các tập lệnh để chạy, trong đó tập lệnh cần chạy sẽ được đặt trên disk và lệnh chạy tập lệnh đó sẽ được thêm vào tệp này.
Service startup
-----------------
Giống như Windows, các dịch vụ có thể được thiết lập trong Linux sẽ khởi động và chạy ở chế độ nền sau mỗi lần khởi động hệ thống. Một danh sách các services có thể được tìm thấy trong thư mục `/etc/init.d`. Chúng ta có thể kiểm tra nội dung của thư mục bằng cách sử dụng `ls`.
```shell-session
user@machine$ ls /etc/init.d/
acpid avahi-daemon cups hibagent kmod networking pppd-dns screen-cleanup unattended-upgrades
alsa-utils bluetooth cups-browsed hwclock.sh lightdm open-iscsi procps speech-dispatcher uuidd
anacron console-setup.sh dbus irqbalance lvm2 open-vm-tools pulseaudio-enable-autospawn spice-vdagent whoopsie
apparmor cron gdm3 iscsid lvm2-lvmpolld openvpn rsync ssh x11-common
apport cryptdisks grub-common kerneloops multipath-tools plymouth rsyslog udev
atd cryptdisks-early hddtemp keyboard-setup.sh network-manager plymouth-log saned ufw
```
.Bashrc
-------
Khi một bash shell được sinh ra, nó sẽ chạy các lệnh được lưu trong `.bashrc`. Tệp này có thể được coi là danh sách khởi động các hành động sẽ được thực hiện. Do đó, nó có thể được chứng minh là một nơi tốt để tìm kiếm persistence.
```shell-session
user@machine$ cat ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
```
> The tilde (~) character in Unix-like operating systems (such as Linux and macOS) is a shorthand for the current user's home directory. Each user on a system has a unique home directory where their personal files and configuration settings are stored.
>
> When you see ~/, it specifically refers to the path of the home directory of the user who is currently logged in. For example, if your username is johndoe, the tilde (~) would represent /home/johndoe on a Linux system, or /Users/johndoe on a macOS system.
>
> Here are a few examples of how the tilde is used:
>
> ~/.bashrc refers to the .bashrc file in the current user's home directory.
> ~/Documents refers to the Documents directory inside the current user's home directory.
> cd ~ is a command to change the current directory to the user's home directory.
> This shorthand makes it easier to refer to paths related to the home directory without needing to type out the full path.
Cài đặt trên toàn hệ thống được lưu trữ trong `/etc/bash.bashrc`và các tệp `/etc/profile`, vì vậy, bạn cũng nên xem qua các tệp này.
Trả lời câu hỏi
--
*In the bashrc file, the size of the history file is defined. What is the size of the history file that is set for the user Ubuntu in the attached machine?*
Trong file bashrc có mô tả kích thước của history file, vậy size của nó là gì? Mình sẽ kiểm tra .bashrc đ của người dùng Ubuntu bằng câu lệnh `cat ~/.bashrc` và tìm HISTFILESIZE.

=> 2000
# Task 6 - Evidence of Execution
Biết những chương trình nào đã được thực thi trên máy chủ là một trong những mục đích chính của việc thực hiện phân tích điều tra. Trên máy chủ Linux , chúng tôi có thể tìm thấy bằng chứng thực thi từ các nguồn sau.
Lịch sử thực hiện Sudo
Tất cả các lệnh chạy trên máy chủ Linuxsudo đều được lưu trữ trong nhật ký xác thực. Chúng ta đã tìm hiểu về nhật ký xác thực trong Nhiệm vụ 3. Chúng ta có thể sử dụng greptiện ích để chỉ lọc ra những thông tin cần thiết từ nhật ký xác thực.
Nhật ký xác thực
```shell
user@machine$ cat /var/log/auth.log* |grep -i COMMAND|tail
Mar 29 17:28:58 tryhackme pkexec[1618]: ubuntu: Error executing command as another user: Not authorized [USER=root] [TTY=unknown] [CWD=/home/ubuntu] [COMMAND=/usr/lib/update-notifier/package-system-locked]
Mar 29 17:49:52 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/cat /etc/sudoers
Mar 29 17:55:22 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/cat /var/log/btmp
Mar 29 17:55:39 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/cat /var/log/wtmp
Mar 29 18:00:54 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/btmp
Mar 29 18:01:24 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/last -f /var/log/btmp
Mar 29 18:03:58 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/last -f /var/log/wtmp
Mar 29 18:05:41 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/last -f /var/log/btmp
Mar 29 18:07:51 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/last -f /var/log/utmp
Mar 29 18:08:13 tryhackme sudo: ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/last -f /var/run/utmp
```
Thiết bị đầu cuối ở trên hiển thị các lệnh do người dùng Ubuntu chạy bằng cách sử dụng sudo.
Lịch sử Bash
Bất kỳ lệnh nào khác ngoài những lệnh đang sử dụng sudođều được lưu trữ trong lịch sử bash. Lịch sử bash của mỗi người dùng được lưu trữ riêng trong thư mục chính của người dùng đó. Do đó, khi kiểm tra lịch sử bash, chúng ta cần lấy tệp bash_history từ thư mục chính của mỗi người dùng. Điều quan trọng là phải kiểm tra lịch sử bash từ người dùng root, để ghi chú tất cả các lệnh chạy bằng người dùng root.
Lịch sử Bash
```shell
user@machine$ cat ~/.bash_history
cd Downloads/
ls
unzip PracticalMalwareAnalysis-Labs-master.zip
cd PracticalMalwareAnalysis-Labs-master/
ls
cd ..
ls
rm -rf sality/
ls
mkdir wannacry
mv Ransomware.WannaCry.zip wannacry/
cd wannacry/
unzip Ransomware.WannaCry.zip
cd ..
rm -rf wannacry/
ls
mkdir exmatter
mv 325ecd90ce19dd8d184ffe7dfb01b0dd02a77e9eabcb587f3738bcfbd3f832a1.7z exmatter/
cd exmatter/
strings -d 325ecd90ce19dd8d184ffe7dfb01b0dd02a77e9eabcb587f3738bcfbd3f832a1|sort|uniq>str-sorted
cd ..
ls
```
Các tệp được truy cập bằng vim
Trình Vimsoạn thảo văn bản lưu trữ nhật ký của các tệp đã mở Vimtrong tệp có tên .viminfotrong thư mục chính. Tệp này chứa lịch sử dòng lệnh, lịch sử chuỗi tìm kiếm, v.v. cho các tệp đã mở. Chúng ta có thể sử dụng cattiện ích để mở .viminfo.
Viminfo
```shell
user@machine$ cat ~/.viminfo
# This viminfo file was generated by Vim 8.1.
# You may edit it if you're careful!
# Viminfo version
|1,4
# Value of 'encoding' when this file was written
*encoding=utf-8
# hlsearch on (H) or off (h):
~h
# Command Line History (newest to oldest):
:q
|2,0,1636562413,,"q"
# Search String History (newest to oldest):
# Expression History (newest to oldest):
# Input Line History (newest to oldest):
# Debug Line History (newest to oldest):
# Registers:
# File marks:
'0 1139 0 ~/Downloads/str
|4,48,1139,0,1636562413,"~/Downloads/str"
# Jumplist (newest first):
-' 1139 0 ~/Downloads/str
|4,39,1139,0,1636562413,"~/Downloads/str"
-' 1 0 ~/Downloads/str
|4,39,1,0,1636562322,"~/Downloads/str"
# History of marks within files (newest to oldest):
> ~/Downloads/str
* 1636562410 0
" 1139 0
```
# Further Readings
https://medium.com/@laupeiip/tryhackme-linux-forensics-write-up-96f1db01fffa