hacktricks/forensics/basic-forensic-methodology/linux-forensics.md

24 KiB
Raw Blame History

Linux Forensics


Gebruik Trickest om maklik en outomatiese werksvloei te bou wat aangedryf word deur die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry Vandaag Toegang:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Aanvanklike Inligting Versameling

Basiese Inligting

Eerstens word dit aanbeveel om 'n USB met bekende goeie binêre lêers en biblioteke daarop te hê (jy kan net Ubuntu kry en die /bin, /sbin, /lib, en /lib64 lêers kopieer), monteer dan die USB, en wysig die omgewingsveranderlikes om daardie binêre lêers te gebruik:

export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64

Nadat jy die stelsel ingestel het om goeie en bekende bineêre lêers te gebruik, kan jy begin om 'n paar basiese inligting te onttrek:

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

Verdagte inligting

Terwyl jy die basiese inligting bekom, moet jy vir vreemde dinge soos die volgende kyk:

  • Root prosesse hardloop gewoonlik met lae PIDS, so as jy 'n root proses met 'n groot PID vind, kan jy dit verdenk
  • Kyk na geregistreerde aanmeldings van gebruikers sonder 'n skaal binne /etc/passwd
  • Kyk vir wagwoordhasings binne /etc/shadow vir gebruikers sonder 'n skaal

Geheue Dump

Om die geheue van die lopende stelsel te bekom, word dit aanbeveel om LiME te gebruik.
Om dit te kompileer, moet jy dieselfde kernel gebruik as die slagoffer se masjien.

{% hint style="info" %} Onthou dat jy LiME of enige ander ding nie kan installeer op die slagoffer se masjien nie, aangesien dit verskeie veranderinge daaraan sal maak {% endhint %}

Dus, as jy 'n identiese weergawe van Ubuntu het, kan jy apt-get install lime-forensics-dkms gebruik
In ander gevalle moet jy LiME van github aflaai en dit met die korrekte kernelkoppe kompileer. Om die presiese kernelkoppe van die slagoffer se masjien te bekom, kan jy net die gids /lib/modules/<kernel weergawe> na jou masjien kopieer, en dan LiME daarmee kompileer:

make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"

LiME ondersteun 3 formate:

  • Rou (elke segment aanmekaar gekonkatenasieer)
  • Gepas (soortgelyk aan rou, maar met nulle in die regter bietjies)
  • LiME (aanbevole formaat met metadata)

LiME kan ook gebruik word om die storting via die netwerk te stuur in plaas van dit op die stelsel te stoor deur iets soos: path=tcp:4444

Skyfbeelding

Afskakel

Eerstens, sal jy die stelsel moet afskakel. Dit is nie altyd 'n opsie nie aangesien die stelsel soms 'n produksieserver kan wees wat die maatskappy nie kan bekostig om af te skakel nie.
Daar is 2 maniere om die stelsel af te skakel, 'n normale afskakeling en 'n "trek die prop uit" afskakeling. Die eerste een sal die prosesse toelaat om soos gewoonlik te beëindig en die lêersisteem om gesinkroniseer te word, maar dit sal ook die moontlike malware toelaat om bewyse te vernietig. Die "trek die prop uit" benadering mag 'n bietjie inligtingsverlies meebring (nie baie van die inligting gaan verlore gaan aangesien ons reeds 'n beeld van die geheue geneem het nie) en die malware sal geen geleentheid hê om iets daaraan te doen nie. Daarom, as jy vermoed dat daar 'n malware mag wees, voer net die sync bevel op die stelsel uit en trek die prop uit.

'n Beeld van die skyf neem

Dit is belangrik om te let dat voordat jy jou rekenaar aan iets wat met die saak verband hou, koppel, moet jy seker maak dat dit as alleen lees gemonteer gaan word om te verhoed dat enige inligting gewysig word.

#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

Skijfafbeelding voor-ontleding

Beeldvorming van 'n skijfafbeelding met geen verdere data nie.

#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


Gebruik Trickest om maklik en outomatiseer werkstrome te bou wat aangedryf word deur die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry Vandaag Toegang:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Soek na bekende Malware

Gewysigde Stelsel lêers

Linux bied gereedskap vir die verseker van die integriteit van stelselkomponente, wat noodsaaklik is om potensieel problematiese lêers op te spoor.

  • RedHat-gebaseerde stelsels: Gebruik rpm -Va vir 'n omvattende ondersoek.
  • Debian-gebaseerde stelsels: dpkg --verify vir aanvanklike verifikasie, gevolg deur debsums | grep -v "OK$" (nadat debsums met apt-get install debsums geïnstalleer is) om enige probleme te identifiseer.

Malware/Rootkit Detectors

Lees die volgende bladsy om meer te leer oor gereedskap wat nuttig kan wees om malware te vind:

{% content-ref url="malware-analysis.md" %} malware-analysis.md {% endcontent-ref %}

Soek na geïnstalleerde programme

Om doeltreffend te soek na geïnstalleerde programme op beide Debian- en RedHat-stelsels, oorweeg om stelsellogs en databasisse te benut saam met handmatige kontroles in algemene gids.

  • Vir Debian, ondersoek /var/lib/dpkg/status en /var/log/dpkg.log om besonderhede oor pakketaanvullings te kry, gebruik grep om te filter vir spesifieke inligting.
  • RedHat-gebruikers kan die RPM-databasis ondervra met rpm -qa --root=/mntpath/var/lib/rpm om geïnstalleerde pakkette te lys.

Om sagteware wat handmatig geïnstalleer is of buite hierdie pakketsbestuurders geïnstalleer is, te ontdek, verken gids soos /usr/local, /opt, /usr/sbin, /usr/bin, /bin, en /sbin. Kombineer gidslys met stelselspesifieke bevele om uitvoerbare lêers te identifiseer wat nie verband hou met bekende pakkette nie, wat jou soektog na alle geïnstalleerde programme verbeter.

# 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>


Gebruik Trickest om maklik werkstrome te bou en outomatiseer met die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry Vandaag Toegang:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Herstel Verwyderde Lopende Binêre Lêers

Stel jou voor 'n proses wat uitgevoer is vanaf /tmp/exec en verwyder is. Dit is moontlik om dit te onttrek

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

Inspekteer Autostart-plekke

Beplande Take

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/

Dienste

Paaie waar 'n kwaadwillige program geïnstalleer kan word as 'n diens:

  • /etc/inittab: Roep inisialiseringsskripte soos rc.sysinit aan, wat verder na aanloopskripte verwys.
  • /etc/rc.d/ en /etc/rc.boot/: Bevat skripte vir diensaanvang, waarvan die laaste in ouer Linux-weergawes gevind word.
  • /etc/init.d/: Word in sekere Linux-weergawes soos Debian gebruik vir die stoor van aanloopskripte.
  • Dienste kan ook geaktiveer word via /etc/inetd.conf of /etc/xinetd/, afhangende van die Linux-variant.
  • /etc/systemd/system: 'n Gids vir stelsel- en diensbestuurskripte.
  • /etc/systemd/system/multi-user.target.wants/: Bevat skakels na dienste wat in 'n multi-gebruiker vlak gestart moet word.
  • /usr/local/etc/rc.d/: Vir aangepaste of derdeparty-dienste.
  • ~/.config/autostart/: Vir gebruikerspesifieke outomatiese aanlooptoepassings, wat 'n skuilplek vir gebruikersgerigte kwaadwillige sagteware kan wees.
  • /lib/systemd/system/: Stelselwye verstek eenheidslêers wat deur geïnstalleerde pakkette voorsien word.

Kernelmodules

Linux kernelmodules, dikwels deur kwaadwillige sagteware as rootkit-komponente gebruik, word by stelselbegin gelaai. Die kritieke gids en lêers vir hierdie modules sluit in:

  • /lib/modules/$(uname -r): Hou modules vir die lopende kernelweergawe.
  • /etc/modprobe.d: Bevat konfigurasie lêers om modulelaaiing te beheer.
  • /etc/modprobe en /etc/modprobe.conf: Lêers vir globale module-instellings.

Ander Autostart-plekke

Linux gebruik verskeie lêers om programme outomaties uit te voer by gebruiker aanmelding, wat moontlik kwaadwillige sagteware kan bevat:

  • /etc/profile.d/*, /etc/profile, en /etc/bash.bashrc: Uitgevoer vir enige gebruiker aanmelding.
  • ~/.bashrc, ~/.bash_profile, ~/.profile, en ~/.config/autostart: Gebruikerspesifieke lêers wat by hul aanmelding loop.
  • /etc/rc.local: Loop nadat alle stelseldienste begin het, wat die einde van die oorgang na 'n multi-gebruiker omgewing aandui.

Ondersoek Logboeke

Linux-stelsels hou gebruikersaktiwiteite en stelselgebeure by deur verskeie log lêers. Hierdie logboeke is noodsaaklik vir die identifisering van ongemagtigde toegang, kwaadwillige infeksies, en ander veiligheidsvoorvalle. Sleutel log lêers sluit in:

  • /var/log/syslog (Debian) of /var/log/messages (RedHat): Vang stelselwye boodskappe en aktiwiteite op.
  • /var/log/auth.log (Debian) of /var/log/secure (RedHat): Neem outentiseringspogings, suksesvolle en mislukte aanmeldings op.
  • Gebruik grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log om relevante outentiseringsgebeure te filter.
  • /var/log/boot.log: Bevat stelselbeginboodskappe.
  • /var/log/maillog of /var/log/mail.log: Neem e-posdiensaktiwiteite op, nuttig vir die opsporing van e-posverwante dienste.
  • /var/log/kern.log: Berg kernelboodskappe op, insluitend foute en waarskuwings.
  • /var/log/dmesg: Hou toestelbestuurderboodskappe aan.
  • /var/log/faillog: Neem mislukte aanmeldingspogings op, wat help met veiligheidsverbrekingondersoeke.
  • /var/log/cron: Neem cron-werkuitvoerings op.
  • /var/log/daemon.log: Volg agtergronddiensaktiwiteite.
  • /var/log/btmp: Dokumenteer mislukte aanmeldingspogings.
  • /var/log/httpd/: Bevat Apache HTTPD-fout- en toegangslogboeke.
  • /var/log/mysqld.log of /var/log/mysql.log: Neem MySQL-databasisaktiwiteite op.
  • /var/log/xferlog: Neem FTP-lêeroordragte op.
  • /var/log/: Kontroleer altyd vir onverwagte logboeke hier.

{% hint style="info" %} Linux-stelsellogboeke en ouditsubstelsels kan gedeaktiveer of verwyder word in 'n indringing of kwaadwillige voorval. Omdat logboeke op Linux-stelsels gewoonlik van die nuttigste inligting oor skadelike aktiwiteite bevat, verwyder indringers dit gereeld. Daarom is dit belangrik om by die ondersoek van beskikbare log lêers te kyk vir gaping of uit plek inskrywings wat 'n aanduiding van verwydering of manipulasie kan wees. {% endhint %}

Linux hou 'n opdraggeskiedenis vir elke gebruiker by, gestoor in:

  • ~/.bash_history
  • ~/.zsh_history
  • ~/.zsh_sessions/*
  • ~/.python_history
  • ~/.*_history

Verder bied die last -Faiwx opdrag 'n lys van gebruikersaanmeldings. Kontroleer dit vir onbekende of onverwagte aanmeldings.

Kontroleer lêers wat ekstra regte kan verleen:

  • Ondersoek /etc/sudoers vir onverwagte gebruikersregte wat moontlik toegeken is.
  • Ondersoek /etc/sudoers.d/ vir onverwagte gebruikersregte wat moontlik toegeken is.
  • Ondersoek /etc/groups om enige ongewone groepslidmaatskappe of -regte te identifiseer.
  • Ondersoek /etc/passwd om enige ongewone groepslidmaatskappe of -regte te identifiseer.

Sommige programme genereer ook hul eie logboeke:

  • SSH: Ondersoek ~/.ssh/authorized_keys en ~/.ssh/known_hosts vir ongemagtigde afgeleë verbindinge.
  • Gnome Desktop: Kyk na ~/.recently-used.xbel vir onlangs benaderde lêers via Gnome-toepassings.
  • Firefox/Chrome: Kontroleer blaaiergeskiedenis en aflaaie in ~/.mozilla/firefox of ~/.config/google-chrome vir verdagte aktiwiteite.
  • VIM: Ondersoek ~/.viminfo vir gebruiksdetails, soos benaderde lêerpaadjies en soekgeskiedenis.
  • Open Office: Kontroleer vir onlangse dokumenttoegang wat dui op gekompromitteerde lêers.
  • FTP/SFTP: Ondersoek logboeke in ~/.ftp_history of ~/.sftp_history vir lêeroordragte wat moontlik ongemagtig is.
  • MySQL: Ondersoek ~/.mysql_history vir uitgevoerde MySQL-navrae, wat moontlik ongemagtigde databasisaktiwiteite kan onthul.
  • Less: Analiseer ~/.lesshst vir gebruiksgeskiedenis, insluitend besigtigde lêers en uitgevoerde opdragte.
  • Git: Ondersoek ~/.gitconfig en projek .git/logs vir veranderinge aan bewaarplekke.

USB Logboeke

usbrip is 'n klein stukkie sagteware geskryf in suiwer Python 3 wat Linux-log lêers (/var/log/syslog* of /var/log/messages* afhangende van die distribusie) ontled om USB-gebeurtenisgeskiedenis tabele saam te stel.

Dit is interessant om al die USB's wat gebruik is te ken en dit sal meer nuttig wees as jy 'n gemagtigde lys van USB's het om "oortredingsgebeure" te vind (die gebruik van USB's wat nie binne daardie lys is nie).

Installasie

pip3 install usbrip
usbrip ids download #Download USB ID database

Voorbeelde

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

Meer voorbeelde en inligting binne die github: https://github.com/snovvcrash/usbrip


Gebruik Trickest om maklik te bou en werkstrome outomatiseer wat aangedryf word deur die wêreld se mees gevorderde gemeenskaplike gereedskap.
Kry Vandaag Toegang:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Oorsig van Gebruikersrekeninge en Aanmeldaktiwiteite

Ondersoek die /etc/passwd, /etc/shadow en sekuriteitslogs vir ongewone name of rekeninge wat geskep is en/of gebruik is in nabyheid van bekende ongemagtigde gebeure. Kyk ook vir moontlike sudo-bruteforce-aanvalle.
Verder, kyk na lêers soos /etc/sudoers en /etc/groups vir onverwagte voorregte wat aan gebruikers gegee is.
Laastens, soek na rekeninge met geen wagwoorde of maklik gerade wagwoorde.

Ondersoek Lêersisteem

Analise van Lêersisteemstrukture in Malware-ondersoek

Wanneer malware-voorvalle ondersoek word, is die struktuur van die lêersisteem 'n belangrike bron van inligting, wat beide die volgorde van gebeure en die inhoud van die malware onthul. Tog ontwikkel malware-skrywers tegnieke om hierdie analise te bemoeilik, soos die wysiging van lêer-timestamps of die vermyding van die lêersisteem vir data-opberging.

Om hierdie teen-forensiese metodes te teenwerk, is dit noodsaaklik om:

  • Voer 'n deeglike tydlyn-analise uit met behulp van gereedskappe soos Autopsy om gebeurtenis-tydlyne te visualiseer of Sleuth Kit's mactime vir gedetailleerde tydlyn-data.
  • Ondersoek onverwagte skripte in die stelsel se $PATH, wat dalk skul of PHP-skripte wat deur aanvallers gebruik word, kan insluit.
  • Ondersoek /dev vir atipiese lêers, aangesien dit tradisioneel spesiale lêers bevat, maar malware-verwante lêers kan bevat.
  • Soek na verskuilde lêers of gidsname met name soos ".. " (dot dot spatie) of "..^G" (dot dot control-G), wat kwaadwillige inhoud kan verberg.
  • Identifiseer setuid-root-lêers met die opdrag: find / -user root -perm -04000 -print Dit vind lêers met verhoogde regte wat deur aanvallers misbruik kan word.
  • Ondersoek verwyderingstimestamps in inode-tabelle om massiewe lêerverwyderings op te spoor, wat moontlik die teenwoordigheid van rootkits of trojane kan aandui.
  • Inspekteer aaneenlopende inodes vir nabygeleë kwaadwillige lêers nadat een geïdentifiseer is, aangesien hulle saam geplaas kon wees.
  • Kontroleer algemene binêre gidsname (/bin, /sbin) vir onlangs gewysigde lêers, aangesien hierdie deur malware verander kon wees.
# List recent files in a directory:
ls -laR --sort=time /bin```

# Sort files in a directory by inode:
ls -lai /bin | sort -n```

{% hint style="info" %} Let wel dat 'n aanvaller die tyd kan wysig om lêers te laat voorkom asof hulle wettig is, maar hy kan nie die inode wysig nie. As jy vind dat 'n lêer aandui dat dit geskep en gewysig is op dieselfde tyd as die res van die lêers in dieselfde vouer, maar die inode is onverwags groter, dan is die tydstempels van daardie lêer gewysig. {% endhint %}

Vergelyk lêers van verskillende lêersisteemweergawes

Opsomming van Vergelyking van Lêersisteemweergawes

Om lêersisteemweergawes te vergelyk en veranderinge te identifiseer, gebruik ons vereenvoudigde git diff opdragte:

  • Om nuwe lêers te vind, vergelyk twee gide:
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
  • Vir gewysigde inhoud, lys veranderinge terwyl spesifieke lyne geïgnoreer word:
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
  • Om uitgewisde lêers op te spoor:
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
  • Filter opsies (--diff-filter) help om te spesifiseer soos bygevoeg (A), verwyder (D), of gewysig (M) lêers.
  • A: Bygevoegde lêers
  • C: Gekopieerde lêers
  • D: Verwyderde lêers
  • M: Gewysigde lêers
  • R: Hernoemde lêers
  • T: Tipe veranderinge (bv., lêer na simbooliese skakel)
  • U: Ongesmerge lêers
  • X: Onbekende lêers
  • B: Gebreekte lêers

Verwysings

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Werk jy in 'n cybersecurity-maatskappy? Wil jy jou maatskappy geadverteer sien in HackTricks? of wil jy toegang hê tot die nuutste weergawe van die PEASS of laai HackTricks in PDF af? Kyk na die INSKRYWINGSPLANNE!

Deel jou haktruuks deur PR's in te dien by die hacktricks-opslag en hacktricks-cloud-opslag.


Gebruik Trickest om maklik te bou en outomatiseer werkafvloei aangedryf deur die wêreld se mees gevorderde gemeenskapshulpmiddels.
Kry Vandag Toegang:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}