Linux Forensics
Tip
AWSãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training AWS Red Team Expert (ARTE)
GCPãããã³ã°ãåŠã³ãå®è·µããïŒHackTricks Training GCP Red Team Expert (GRTE)
Azureãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksããµããŒããã
- ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã確èªããŠãã ããïŒ
- **ð¬ Discordã°ã«ãŒããŸãã¯ãã¬ã°ã©ã ã°ã«ãŒãã«åå ããããTwitter ðŠ @hacktricks_liveããã©ããŒããŠãã ããã
- HackTricksããã³HackTricks Cloudã®GitHubãªããžããªã«PRãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã
åææ å ±åé
åºæ¬æ å ±
ãŸãæåã«ãè¯ãç¥ããããã€ããªãšã©ã€ãã©ãªãå ¥ã£ã USB ãçšæããããšããå§ãããŸãïŒubuntuãååŸãããã©ã«ã /bin, /sbin, /lib, ããã³ /lib64 ãã³ããŒããã ãã§æžã¿ãŸãïŒã次ã«ãUSBãããŠã³ããããããã®ãã€ããªã䜿çšããããã«ç°å¢å€æ°ã倿ŽããŸãïŒ
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
ã·ã¹ãã ãè¯å¥œã§æ¢ç¥ã®ãã€ããªã䜿çšããããã«èšå®ããããåºæ¬çãªæ å ±ãæœåºãå§ããããšãã§ããŸãïŒ
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
ifconfig -a || ip a #Network interfaces (promiscuous mode?)
ps -ef #Running processes
netstat -anp #Proccess and ports
lsof -V #Open files
netstat -rn; route #Routing table
df; mount #Free space and mounted devices
free #Meam and swap space
w #Who is connected
last -Faiwx #Logins
lsmod #What is loaded
cat /etc/passwd #Unexpected data?
cat /etc/shadow #Unexpected data?
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
çãããæ å ±
åºæ¬æ å ±ãååŸããéã«ã¯ã以äžã®ãããªå¥åŠãªäºæããã§ãã¯ããå¿ èŠããããŸãïŒ
- ã«ãŒãããã»ã¹ã¯éåžžäœãPIDã§å®è¡ãããããã倧ããªPIDãæã€ã«ãŒãããã»ã¹ãèŠã€ããå Žåã¯çãã¹ãã§ã
/etc/passwdå ã®ã·ã§ã«ãæããªããŠãŒã¶ãŒã®ç»é²ããããã°ã€ã³ã確èªããŸã- ã·ã§ã«ãæããªããŠãŒã¶ãŒã®ããã«ã
/etc/shadowå ã®ãã¹ã¯ãŒãããã·ã¥ã確èªããŸã
ã¡ã¢ãªãã³ã
å®è¡äžã®ã·ã¹ãã ã®ã¡ã¢ãªãååŸããã«ã¯ãLiMEã䜿çšããããšããå§ãããŸãã
ã³ã³ãã€ã«ããã«ã¯ã被害è
ã®ãã·ã³ã䜿çšããŠããåãã«ãŒãã«ã䜿çšããå¿
èŠããããŸãã
Tip
被害è ã®ãã·ã³ã«LiMEããã®ä»ã®ãã®ãã€ã³ã¹ããŒã«ããããšã¯ã§ããªãããšãèŠããŠãããŠãã ããããããããšãããã€ãã®å€æŽãå ãããŸãã
ãããã£ãŠãåäžã®UbuntuããŒãžã§ã³ãããå Žåã¯ãapt-get install lime-forensics-dkmsã䜿çšã§ããŸãã
ä»ã®å Žåã¯ãgithubããLiMEãããŠã³ããŒãããæ£ããã«ãŒãã«ããããŒã§ã³ã³ãã€ã«ããå¿
èŠããããŸãã被害è
ã®ãã·ã³ã®æ£ç¢ºãªã«ãŒãã«ããããŒãååŸããã«ã¯ãåã«/lib/modules/<kernel version>ãã£ã¬ã¯ããªãããªãã®ãã·ã³ã«ã³ããŒããããã䜿çšããŠLiMEãã³ã³ãã€ã«ããŸãïŒ
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
LiMEã¯3ã€ã®ãã©ãŒãããããµããŒãããŠããŸãïŒ
- RawïŒãã¹ãŠã®ã»ã°ã¡ã³ããé£çµããããã®ïŒ
- PaddedïŒRawãšåãã§ãããå³åŽã®ãããã«ãŒãã远å ãããŠããŸãïŒ
- LimeïŒã¡ã¿ããŒã¿ä»ãã®æšå¥šãã©ãŒãããïŒ
LiMEã¯ãã·ã¹ãã ã«ä¿åãã代ããã«ãããã¯ãŒã¯çµç±ã§ãã³ããéä¿¡ããããã«ã䜿çšã§ããŸããäŸãã°ïŒpath=tcp:4444
ãã£ã¹ã¯ã€ã¡ãŒãžã³ã°
ã·ã£ããããŠã³
ãŸãæåã«ãã·ã¹ãã ãã·ã£ããããŠã³ããå¿
èŠããããŸããããã¯åžžã«éžæè¢ã§ã¯ãªããæã«ã¯ã·ã¹ãã ãäŒç€Ÿãã·ã£ããããŠã³ã§ããªããããã¯ã·ã§ã³ãµãŒããŒã§ããããšããããŸãã
ã·ã¹ãã ãã·ã£ããããŠã³ããæ¹æ³ã¯2ã€ãããéåžžã®ã·ã£ããããŠã³ãš**ããã©ã°ãæããã·ã£ããããŠã³ã§ããæåã®æ¹æ³ã§ã¯ãããã»ã¹ãéåžžéãçµäºããããšãèš±å¯ãããã¡ã€ã«ã·ã¹ãã ãåæãããããšãå¯èœã«ããŸãããåæã«ãã«ãŠã§ã¢ã蚌æ ãç Žå£ããå¯èœæ§ããããŸããããã©ã°ãæããã¢ãããŒãã¯æ
å ±ã®æå€±ã䌎ãå¯èœæ§ããããŸãïŒã¡ã¢ãªã®ã€ã¡ãŒãžããã§ã«ååŸããŠããããã倱ãããæ
å ±ã¯ããŸãå€ããããŸããïŒãããã«ãŠã§ã¢ã¯äœãã§ããæ©äŒããããŸããããããã£ãŠããã«ãŠã§ã¢ã®å¯èœæ§ããããšçãå Žåã¯ãã·ã¹ãã ã§sync** ã³ãã³ããå®è¡ãããã©ã°ãæããŠãã ããã
ãã£ã¹ã¯ã®ã€ã¡ãŒãžãååŸãã
ã±ãŒã¹ã«é¢é£ããäœãã«ã³ã³ãã¥ãŒã¿ãæ¥ç¶ããåã«ãæ å ±ã倿Žããªãããã«èªã¿åãå°çšã§ããŠã³ããããããšã確èªããããšãéèŠã§ãã
#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512
#Raw copy with hashes along the way (more secure as it checks hashes while it's copying the data)
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
ãã£ã¹ã¯ã€ã¡ãŒãžã®äºååæ
ããŒã¿ããã以äžãªããã£ã¹ã¯ã€ã¡ãŒãžãã€ã¡ãŒãžã³ã°ããã
#Find out if it's a disk image using "file" command
file disk.img
disk.img: Linux rev 1.0 ext4 filesystem data, UUID=59e7a736-9c90-4fab-ae35-1d6a28e5de27 (extents) (64bit) (large files) (huge files)
#Check which type of disk image it's
img_stat -t evidence.img
raw
#You can list supported types with
img_stat -i list
Supported image format types:
raw (Single or split raw file (dd))
aff (Advanced Forensic Format)
afd (AFF Multiple File)
afm (AFF with external metadata)
afflib (All AFFLIB image formats (including beta ones))
ewf (Expert Witness Format (EnCase))
#Data of the image
fsstat -i raw -f ext4 disk.img
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: Ext4
Volume Name:
Volume ID: 162850f203fd75afab4f1e4736a7e776
Last Written at: 2020-02-06 06:22:48 (UTC)
Last Checked at: 2020-02-06 06:15:09 (UTC)
Last Mounted at: 2020-02-06 06:15:18 (UTC)
Unmounted properly
Last mounted on: /mnt/disk0
Source OS: Linux
[...]
#ls inside the image
fls -i raw -f ext4 disk.img
d/d 11: lost+found
d/d 12: Documents
d/d 8193: folder1
d/d 8194: folder2
V/V 65537: $OrphanFiles
#ls inside folder
fls -i raw -f ext4 disk.img 12
r/r 16: secret.txt
#cat file inside image
icat -i raw -f ext4 disk.img 16
ThisisTheMasterSecret
æ¢ç¥ã®ãã«ãŠã§ã¢ãæ€çŽ¢
ä¿®æ£ãããã·ã¹ãã ãã¡ã€ã«
Linuxã¯ãã·ã¹ãã ã³ã³ããŒãã³ãã®æŽåæ§ã確ä¿ããããã®ããŒã«ãæäŸããŠãããæœåšçã«åé¡ã®ãããã¡ã€ã«ãç¹å®ããããã«éèŠã§ãã
- RedHatããŒã¹ã®ã·ã¹ãã :
rpm -Vaã䜿çšããŠå æ¬çãªãã§ãã¯ãè¡ããŸãã - DebianããŒã¹ã®ã·ã¹ãã : åææ€èšŒã«ã¯
dpkg --verifyã䜿çšãããã®åŸdebsums | grep -v "OK$"ïŒapt-get install debsumsã§debsumsãã€ã³ã¹ããŒã«ããåŸïŒãå®è¡ããŠåé¡ãç¹å®ããŸãã
ãã«ãŠã§ã¢/ã«ãŒããããæ€åºããŒã«
ãã«ãŠã§ã¢ãèŠã€ããã®ã«åœ¹ç«ã€ããŒã«ã«ã€ããŠåŠã¶ã«ã¯ã以äžã®ããŒãžãåç §ããŠãã ããïŒ
ã€ã³ã¹ããŒã«ãããããã°ã©ã ãæ€çŽ¢
Debianããã³RedHatã·ã¹ãã ã§ã€ã³ã¹ããŒã«ãããããã°ã©ã ã广çã«æ€çŽ¢ããã«ã¯ãã·ã¹ãã ãã°ãããŒã¿ããŒã¹ã掻çšããäžè¬çãªãã£ã¬ã¯ããªã§ã®æåãã§ãã¯ã䜵çšããããšãæ€èšããŠãã ããã
- Debianã®å Žåã_
/var/lib/dpkg/statusããã³/var/log/dpkg.log_ã調æ»ããŠããã±ãŒãžã€ã³ã¹ããŒã«ã«é¢ãã詳现ãååŸããgrepã䜿çšããŠç¹å®ã®æ å ±ããã£ã«ã¿ãªã³ã°ããŸãã - RedHatãŠãŒã¶ãŒã¯ã
rpm -qa --root=/mntpath/var/lib/rpmã䜿çšããŠã€ã³ã¹ããŒã«ãããããã±ãŒãžã®ãªã¹ããååŸã§ããŸãã
ãããã®ããã±ãŒãžãããŒãžã£ãŒã®å€éšã§æåã§ã€ã³ã¹ããŒã«ããããœãããŠã§ã¢ãæããã«ããããã«ã/usr/localã/optã/usr/sbinã/usr/binã/binãããã³_/sbin_ã®ãããªãã£ã¬ã¯ããªãæ¢çŽ¢ããŠãã ããããã£ã¬ã¯ããªãªã¹ããšã·ã¹ãã åºæã®ã³ãã³ããçµã¿åãããŠãæ¢ç¥ã®ããã±ãŒãžã«é¢é£ä»ããããŠããªãå®è¡å¯èœãã¡ã€ã«ãç¹å®ããã€ã³ã¹ããŒã«ããããã¹ãŠã®ããã°ã©ã ã®æ€çŽ¢ã匷åããŸãã
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
cat /var/log/dpkg.log | grep installed
# RedHat RPM database query
rpm -qa --root=/mntpath/var/lib/rpm
# Listing directories for manual installations
ls /usr/sbin /usr/bin /bin /sbin
# Identifying non-package executables (Debian)
find /sbin/ -exec dpkg -S {} \; | grep "no path found"
# Identifying non-package executables (RedHat)
find /sbin/ âexec rpm -qf {} \; | grep "is not"
# Find exacuable files
find / -type f -executable | grep <something>
åé€ãããå®è¡äžã®ãã€ããªã埩å ãã
/tmp/exec ããå®è¡ãããããã»ã¹ãåé€ããããšæ³åããŠãã ããããããæœåºããããšãå¯èœã§ãã
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
èªåèµ·åå Žæã®æ€æ»
ã¹ã±ãžã¥ãŒã«ãããã¿ã¹ã¯
cat /var/spool/cron/crontabs/* \
/var/spool/cron/atjobs \
/var/spool/anacron \
/etc/cron* \
/etc/at* \
/etc/anacrontab \
/etc/incron.d/* \
/var/spool/incron/* \
#MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
Hunt: Cron/Anacronã®æªçšãš0anacronããã³çãããã¹ã¿ã
æ»æè ã¯ã宿çãªå®è¡ã確ä¿ããããã«ãå/etc/cron.*/ãã£ã¬ã¯ããªã«ååšãã0anacronã¹ã¿ããç·šéããããšããããããŸãã
# List 0anacron files and their timestamps/sizes
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
# Look for obvious execution of shells or downloaders embedded in cron stubs
grep -R --line-number -E 'curl|wget|/bin/sh|python|bash -c' /etc/cron.*/* 2>/dev/null
Hunt: SSHã®åŒ·åã®ããŒã«ããã¯ãšããã¯ãã¢ã·ã§ã«
sshd_configãã·ã¹ãã ã¢ã«ãŠã³ãã·ã§ã«ã®å€æŽã¯ãã¢ã¯ã»ã¹ãä¿æããããã®äžè¬çãªãã¹ããšã¯ã¹ããã€ãã§ãã
# Root login enablement (flag "yes" or lax values)
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
# System accounts with interactive shells (e.g., games â /bin/sh)
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
Hunt: Cloud C2 markers (Dropbox/Cloudflare Tunnel)
- Dropbox APIããŒã³ã³ã¯éåžžãHTTPSçµç±ã§api.dropboxapi.comãŸãã¯content.dropboxapi.comã䜿çšããAuthorization: BearerããŒã¯ã³ã䜿çšããŸãã
- ãµãŒããŒããã®äºæããªãDropboxã®åºå£ãæ¢ãããã«ãproxy/Zeek/NetFlowã§ãã³ãããŸãã
- Cloudflare TunnelïŒ
cloudflaredïŒã¯ãã¢ãŠãããŠã³ã443çµç±ã§ããã¯ã¢ããC2ãæäŸããŸãã
ps aux | grep -E '[c]loudflared|trycloudflare'
systemctl list-units | grep -i cloudflared
ãµãŒãã¹
ãã«ãŠã§ã¢ããµãŒãã¹ãšããŠã€ã³ã¹ããŒã«ãããå¯èœæ§ã®ãããã¹ïŒ
- /etc/inittab: rc.sysinitã®ãããªåæåã¹ã¯ãªãããåŒã³åºããããã«èµ·åã¹ã¯ãªããã«æç€ºããŸãã
- /etc/rc.d/ ãš /etc/rc.boot/: ãµãŒãã¹èµ·åçšã®ã¹ã¯ãªãããå«ã¿ãåŸè ã¯å€ãLinuxããŒãžã§ã³ã§èŠãããŸãã
- /etc/init.d/: Debianã®ãããªç¹å®ã®LinuxããŒãžã§ã³ã§èµ·åã¹ã¯ãªãããä¿åããããã«äœ¿çšãããŸãã
- ãµãŒãã¹ã¯ãLinuxã®ããªã¢ã³ãã«å¿ã㊠/etc/inetd.conf ãŸã㯠/etc/xinetd/ ãä»ããŠãæå¹åãããããšããããŸãã
- /etc/systemd/system: ã·ã¹ãã ããã³ãµãŒãã¹ãããŒãžã£ãŒã¹ã¯ãªããçšã®ãã£ã¬ã¯ããªã
- /etc/systemd/system/multi-user.target.wants/: ãã«ããŠãŒã¶ãŒã©ã³ã¬ãã«ã§èµ·åãã¹ããµãŒãã¹ãžã®ãªã³ã¯ãå«ã¿ãŸãã
- /usr/local/etc/rc.d/: ã«ã¹ã¿ã ãŸãã¯ãµãŒãããŒãã£ã®ãµãŒãã¹çšã
- ~/.config/autostart/: ãŠãŒã¶ãŒåºæã®èªåèµ·åã¢ããªã±ãŒã·ã§ã³çšã§ããŠãŒã¶ãŒãã¿ãŒã²ããã«ãããã«ãŠã§ã¢ã®é ãå Žæã«ãªãå¯èœæ§ããããŸãã
- /lib/systemd/system/: ã€ã³ã¹ããŒã«ãããããã±ãŒãžã«ãã£ãŠæäŸãããã·ã¹ãã å šäœã®ããã©ã«ããŠããããã¡ã€ã«ã
ã«ãŒãã«ã¢ãžã¥ãŒã«
Linuxã«ãŒãã«ã¢ãžã¥ãŒã«ã¯ããã«ãŠã§ã¢ãã«ãŒããããã³ã³ããŒãã³ããšããŠå©çšããããšãå€ããã·ã¹ãã ããŒãæã«ããŒããããŸãããããã®ã¢ãžã¥ãŒã«ã«ãšã£ãŠéèŠãªãã£ã¬ã¯ããªãšãã¡ã€ã«ã¯ä»¥äžã®éãã§ãïŒ
- /lib/modules/$(uname -r): å®è¡äžã®ã«ãŒãã«ããŒãžã§ã³ã®ã¢ãžã¥ãŒã«ãä¿æããŸãã
- /etc/modprobe.d: ã¢ãžã¥ãŒã«ã®ããŒããå¶åŸ¡ããããã®èšå®ãã¡ã€ã«ãå«ã¿ãŸãã
- /etc/modprobe ãš /etc/modprobe.conf: ã°ããŒãã«ã¢ãžã¥ãŒã«èšå®çšã®ãã¡ã€ã«ã
ãã®ä»ã®èªåèµ·åå Žæ
Linuxã¯ããŠãŒã¶ãŒãã°ã€ã³æã«ããã°ã©ã ãèªåçã«å®è¡ããããã®ããŸããŸãªãã¡ã€ã«ã䜿çšãããã«ãŠã§ã¢ãé ãå¯èœæ§ããããŸãïŒ
- /etc/profile.d/*, /etc/profileãããã³ /etc/bash.bashrc: ãã¹ãŠã®ãŠãŒã¶ãŒãã°ã€ã³æã«å®è¡ãããŸãã
- ~/.bashrcã~/.bash_profileã~/.profileãããã³ ~/.config/autostart: ãŠãŒã¶ãŒåºæã®ãã¡ã€ã«ã§ããã°ã€ã³æã«å®è¡ãããŸãã
- /etc/rc.local: ãã¹ãŠã®ã·ã¹ãã ãµãŒãã¹ãèµ·åããåŸã«å®è¡ããããã«ããŠãŒã¶ãŒç°å¢ãžã®ç§»è¡ã®çµäºã瀺ããŸãã
ãã°ã®èª¿æ»
Linuxã·ã¹ãã ã¯ãããŸããŸãªãã°ãã¡ã€ã«ãéããŠãŠãŒã¶ãŒã®æŽ»åãã·ã¹ãã ã€ãã³ãã远跡ããŸãããããã®ãã°ã¯ãäžæ£ã¢ã¯ã»ã¹ããã«ãŠã§ã¢ææããã®ä»ã®ã»ãã¥ãªãã£ã€ã³ã·ãã³ããç¹å®ããããã«éèŠã§ããäž»èŠãªãã°ãã¡ã€ã«ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- /var/log/syslog (Debian) ãŸã㯠/var/log/messages (RedHat): ã·ã¹ãã å šäœã®ã¡ãã»ãŒãžãšæŽ»åããã£ããã£ããŸãã
- /var/log/auth.log (Debian) ãŸã㯠/var/log/secure (RedHat): èªèšŒè©Šè¡ãæåãããã°ã€ã³ãšå€±æãããã°ã€ã³ãèšé²ããŸãã
grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.logã䜿çšããŠé¢é£ããèªèšŒã€ãã³ãããã£ã«ã¿ãªã³ã°ããŸãã- /var/log/boot.log: ã·ã¹ãã èµ·åã¡ãã»ãŒãžãå«ã¿ãŸãã
- /var/log/maillog ãŸã㯠/var/log/mail.log: ã¡ãŒã«ãµãŒããŒã®æŽ»åããã°ã«èšé²ããã¡ãŒã«é¢é£ãµãŒãã¹ã®è¿œè·¡ã«åœ¹ç«ã¡ãŸãã
- /var/log/kern.log: ã«ãŒãã«ã¡ãã»ãŒãžãä¿åãããšã©ãŒãèŠåãå«ã¿ãŸãã
- /var/log/dmesg: ããã€ã¹ãã©ã€ããŒã¡ãã»ãŒãžãä¿æããŸãã
- /var/log/faillog: 倱æãããã°ã€ã³è©Šè¡ãèšé²ããã»ãã¥ãªãã£äŸµå®³ã®èª¿æ»ã«åœ¹ç«ã¡ãŸãã
- /var/log/cron: cronãžã§ãã®å®è¡ããã°ã«èšé²ããŸãã
- /var/log/daemon.log: ããã¯ã°ã©ãŠã³ããµãŒãã¹ã®æŽ»åã远跡ããŸãã
- /var/log/btmp: 倱æãããã°ã€ã³è©Šè¡ãææžåããŸãã
- /var/log/httpd/: Apache HTTPDã®ãšã©ãŒãã°ãšã¢ã¯ã»ã¹ãã°ãå«ã¿ãŸãã
- /var/log/mysqld.log ãŸã㯠/var/log/mysql.log: MySQLããŒã¿ããŒã¹ã®æŽ»åããã°ã«èšé²ããŸãã
- /var/log/xferlog: FTPãã¡ã€ã«è»¢éãèšé²ããŸãã
- /var/log/: ããã§äºæããªããã°ãåžžã«ç¢ºèªããŠãã ããã
Tip
Linuxã·ã¹ãã ã®ãã°ãšç£æ»ãµãã·ã¹ãã ã¯ãäŸµå ¥ããã«ãŠã§ã¢ã®ã€ã³ã·ãã³ãã§ç¡å¹åãŸãã¯åé€ãããå¯èœæ§ããããŸããLinuxã·ã¹ãã ã®ãã°ã¯ãæªæã®ããæŽ»åã«é¢ããæãæçšãªæ å ±ãå«ãããšãå€ããããäŸµå ¥è ã¯ãããã宿çã«åé€ããŸãããããã£ãŠãå©çšå¯èœãªãã°ãã¡ã€ã«ã調æ»ããéã«ã¯ãåé€ãæ¹ããã®å åã§ããå¯èœæ§ã®ããã®ã£ãããé åºãä¹±ãããšã³ããªãæ¢ãããšãéèŠã§ãã
Linuxã¯åãŠãŒã¶ãŒã®ã³ãã³ãå±¥æŽãä¿æããŸããããã¯ä»¥äžã«ä¿åãããŸãïŒ
- ~/.bash_history
- ~/.zsh_history
- ~/.zsh_sessions/*
- ~/.python_history
- ~/.*_history
ããã«ãlast -Faiwx ã³ãã³ãã¯ãŠãŒã¶ãŒãã°ã€ã³ã®ãªã¹ããæäŸããŸããæªç¥ãŸãã¯äºæããªããã°ã€ã³ããªãã確èªããŠãã ããã
远å ã®æš©éãä»äžã§ãããã¡ã€ã«ã確èªããŠãã ããïŒ
- äºæããªããŠãŒã¶ãŒæš©éãä»äžãããŠããå¯èœæ§ãããããã
/etc/sudoersã確èªããŸãã - äºæããªããŠãŒã¶ãŒæš©éãä»äžãããŠããå¯èœæ§ãããããã
/etc/sudoers.d/ã確èªããŸãã - ç°åžžãªã°ã«ãŒãã¡ã³ããŒã·ãããæš©éãç¹å®ããããã«ã
/etc/groupsã調æ»ããŸãã - ç°åžžãªã°ã«ãŒãã¡ã³ããŒã·ãããæš©éãç¹å®ããããã«ã
/etc/passwdã調æ»ããŸãã
äžéšã®ã¢ããªãç¬èªã®ãã°ãçæããŸãïŒ
- SSH: äžæ£ãªãªã¢ãŒãæ¥ç¶ã®ããã« ~/.ssh/authorized_keys ãš ~/.ssh/known_hosts ã調æ»ããŸãã
- Gnomeãã¹ã¯ããã: Gnomeã¢ããªã±ãŒã·ã§ã³ãä»ããŠæè¿ã¢ã¯ã»ã¹ããããã¡ã€ã«ã®ããã« ~/.recently-used.xbel ã確èªããŸãã
- Firefox/Chrome: çãããæŽ»åã®ããã« ~/.mozilla/firefox ãŸã㯠~/.config/google-chrome ã§ãã©ãŠã¶ã®å±¥æŽãšããŠã³ããŒãã確èªããŸãã
- VIM: ã¢ã¯ã»ã¹ããããã¡ã€ã«ãã¹ãæ€çޢ履æŽãªã©ã®äœ¿çšè©³çްã®ããã« ~/.viminfo ã確èªããŸãã
- Open Office: 䟵害ããããã¡ã€ã«ã瀺ãå¯èœæ§ã®ããæè¿ã®ææžã¢ã¯ã»ã¹ã確èªããŸãã
- FTP/SFTP: äžæ£ãªãã¡ã€ã«è»¢éã®å¯èœæ§ãããããã_ ~/.ftp_history_ ãŸã㯠~/.sftp_history ã®ãã°ã確èªããŸãã
- MySQL: å®è¡ãããMySQLã¯ãšãªã調æ»ããããã« ~/.mysql_history ã調æ»ããäžæ£ãªããŒã¿ããŒã¹æŽ»åãæããã«ããŸãã
- Less: 衚瀺ããããã¡ã€ã«ãå®è¡ãããã³ãã³ããå«ã䜿çšå±¥æŽã®ããã« ~/.lesshst ãåæããŸãã
- Git: ãªããžããªã®å€æŽã®ããã« ~/.gitconfig ãšãããžã§ã¯ãã® .git/logs ã調æ»ããŸãã
USBãã°
usbrip ã¯ãLinuxã®ãã°ãã¡ã€ã«ïŒãã£ã¹ããªãã¥ãŒã·ã§ã³ã«å¿ã㊠/var/log/syslog* ãŸã㯠/var/log/messages*ïŒãè§£æããŠUSBã€ãã³ãå±¥æŽããŒãã«ãæ§ç¯ããããã«çŽç²ãªPython 3ã§æžãããå°ããªãœãããŠã§ã¢ã§ãã
䜿çšããããã¹ãŠã®USBãç¥ãããšã¯è峿·±ããâéåã€ãã³ãâïŒãã®ãªã¹ãã«å«ãŸããŠããªãUSBã®äœ¿çšïŒãèŠã€ããããã«ãæ¿èªãããUSBã®ãªã¹ãããããšããã«æçšã§ãã
ã€ã³ã¹ããŒã«
pip3 install usbrip
usbrip ids download #Download USB ID database
äŸ
usbrip events history #Get USB history of your curent linux machine
usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user
#Search for vid and/or pid
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
More examples and info inside the github: https://github.com/snovvcrash/usbrip
ãŠãŒã¶ãŒã¢ã«ãŠã³ããšãã°ãªã³æŽ»åã®ã¬ãã¥ãŒ
/etc/passwdã/etc/shadowãããã³ã»ãã¥ãªãã£ãã°ã調ã¹ãŠãç¥ãããŠããäžæ£ãªã€ãã³ãã«è¿ãäœçœ®ã§äœæãŸãã¯äœ¿çšãããç°åžžãªååãã¢ã«ãŠã³ããæ¢ããŸãããŸããå¯èœãªsudoãã«ãŒããã©ãŒã¹æ»æã確èªããŠãã ããã
ããã«ã_/etc/sudoersã/etc/groups_ã®ãããªãã¡ã€ã«ããã§ãã¯ããŠããŠãŒã¶ãŒã«äžããããäºæããªãç¹æš©ã確èªããŸãã
æåŸã«ããã¹ã¯ãŒããªããŸãã¯ç°¡åã«æšæž¬ã§ãããã¹ã¯ãŒããæã€ã¢ã«ãŠã³ããæ¢ããŸãã
ãã¡ã€ã«ã·ã¹ãã ã®èª¿æ»
ãã«ãŠã§ã¢èª¿æ»ã«ããããã¡ã€ã«ã·ã¹ãã æ§é ã®åæ
ãã«ãŠã§ã¢ã€ã³ã·ãã³ãã調æ»ããéããã¡ã€ã«ã·ã¹ãã ã®æ§é ã¯éèŠãªæ å ±æºã§ãããã€ãã³ãã®é åºããã«ãŠã§ã¢ã®å 容ãæããã«ããŸãããããããã«ãŠã§ã¢ã®èè ã¯ããã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ãã倿ŽããããããŒã¿ã¹ãã¬ãŒãžã®ããã«ãã¡ã€ã«ã·ã¹ãã ãåé¿ããããããªã©ããã®åæã劚ããæè¡ãéçºããŠããŸãã
ãããã®ã¢ã³ããã©ã¬ã³ãžãã¯ææ³ã«å¯Ÿæããããã«ã¯ã以äžãéèŠã§ãïŒ
- Autopsyã®ãããªããŒã«ã䜿çšããŠã€ãã³ãã®ã¿ã€ã ã©ã€ã³ãèŠèŠåããããã«ã培åºçãªã¿ã€ã ã©ã€ã³åæãè¡ãããšããŸãã¯Sleuth Kitã®
mactimeã䜿çšããŠè©³çްãªã¿ã€ã ã©ã€ã³ããŒã¿ãååŸããŸãã - æ»æè ã«ãã£ãŠäœ¿çšãããã·ã§ã«ãPHPã¹ã¯ãªãããå«ãå¯èœæ§ã®ãããã·ã¹ãã ã®$PATHå ã®äºæããªãã¹ã¯ãªããã調æ»ããŸãã
- éåžžã¯ç¹å¥ãªãã¡ã€ã«ãå«ã
/devã調ã¹ãŸããããã«ãŠã§ã¢é¢é£ã®ãã¡ã€ã«ãååšããå¯èœæ§ããããŸãã - æªæã®ããã³ã³ãã³ããé ãå¯èœæ§ã®ãããååãã.. ã(ããããããã¹ããŒã¹)ãã..^Gã(ããããããã³ã³ãããŒã«-G)ã®é ããã¡ã€ã«ããã£ã¬ã¯ããªãæ€çŽ¢ããŸãã
- æ»æè
ã«ãã£ãŠæªçšãããå¯èœæ§ã®ãããææ Œãããæš©éãæã€ãã¡ã€ã«ãèŠã€ããããã«ã次ã®ã³ãã³ãã䜿çšããŠsetuid rootãã¡ã€ã«ãç¹å®ããŸãïŒ
find / -user root -perm -04000 -print - ã«ãŒãããããããã€ã®æšéЬã®ååšã瀺ãå¯èœæ§ã®ããã倧éã®ãã¡ã€ã«åé€ã瀺ãããã«inodeããŒãã«ã®åé€ã¿ã€ã ã¹ã¿ã³ããã¬ãã¥ãŒããŸãã
- 1ã€ã®æªæã®ãããã¡ã€ã«ãç¹å®ããåŸãè¿ãã«ããæªæã®ãããã¡ã€ã«ã®ããã«é£ç¶ããinodeãæ€æ»ããŸãããããã¯äžç·ã«é 眮ãããŠããå¯èœæ§ããããŸãã
- ãã«ãŠã§ã¢ã«ãã£ãŠå€æŽãããå¯èœæ§ããããããæè¿å€æŽããããã¡ã€ã«ã®ããã«äžè¬çãªãã€ããªãã£ã¬ã¯ããªïŒ/binã/sbinïŒã確èªããŸãã
# List recent files in a directory:
ls -laR --sort=time /bin```
# Sort files in a directory by inode:
ls -lai /bin | sort -n```
Tip
泚æããŠãã ãããæ»æè ã¯æéã倿ŽããŠãã¡ã€ã«ãæ£åœãªãã®ã«èŠããããšãã§ããŸãããinodeã倿Žããããšã¯ã§ããŸããããããã¡ã€ã«ãåããã©ã«ãå ã®ä»ã®ãã¡ã€ã«ãšåæã«äœæããã³å€æŽãããããšã瀺ããŠããããinodeãäºæãã倧ããå Žåããã®ãã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ãã倿Žãããããšã«ãªããŸãã
ç°ãªããã¡ã€ã«ã·ã¹ãã ããŒãžã§ã³ã®æ¯èŒ
ãã¡ã€ã«ã·ã¹ãã ããŒãžã§ã³æ¯èŒã®æŠèŠ
ãã¡ã€ã«ã·ã¹ãã ã®ããŒãžã§ã³ãæ¯èŒãã倿Žç¹ãç¹å®ããããã«ãç°¡ç¥åãããgit diffã³ãã³ãã䜿çšããŸãïŒ
- æ°ãããã¡ã€ã«ãèŠã€ããããã«ã2ã€ã®ãã£ã¬ã¯ããªãæ¯èŒããŸãïŒ
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
- 倿Žãããå 容ãç¹å®ã®è¡ãç¡èŠããªãã倿Žããªã¹ãããŸã:
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
- åé€ããããã¡ã€ã«ãæ€åºãã:
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
- ãã£ã«ã¿ãŒãªãã·ã§ã³ (
--diff-filter) ã¯ã远å ããã (A)ãåé€ããã (D)ããŸãã¯å€æŽããã (M) ãã¡ã€ã«ãªã©ãç¹å®ã®å€æŽã«çµã蟌ãã®ã«åœ¹ç«ã¡ãŸãã A: 远å ããããã¡ã€ã«C: ã³ããŒããããã¡ã€ã«D: åé€ããããã¡ã€ã«M: 倿Žããããã¡ã€ã«R: ååã倿Žããããã¡ã€ã«T: ã¿ã€ãã®å€æŽïŒäŸïŒãã¡ã€ã«ããã·ã³ããªãã¯ãªã³ã¯ãžïŒU: ããŒãžãããŠããªããã¡ã€ã«X: äžæãªãã¡ã€ã«B: å£ãããã¡ã€ã«
åèæç®
-
https://git-scm.com/docs/git-diff#Documentation/git-diff.txtâdiff-filterACDMRTUXB82308203
-
æžç±: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides
-
Red Canary â Patching for persistence: How DripDropper Linux malware moves through the cloud
Tip
AWSãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training AWS Red Team Expert (ARTE)
GCPãããã³ã°ãåŠã³ãå®è·µããïŒHackTricks Training GCP Red Team Expert (GRTE)
Azureãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksããµããŒããã
- ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã確èªããŠãã ããïŒ
- **ð¬ Discordã°ã«ãŒããŸãã¯ãã¬ã°ã©ã ã°ã«ãŒãã«åå ããããTwitter ðŠ @hacktricks_liveããã©ããŒããŠãã ããã
- HackTricksããã³HackTricks Cloudã®GitHubãªããžããªã«PRãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã


