Linux Forensics

Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。 今すぐアクセスしてください:

**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!

HackTricksをサポートする他の方法:HackTricksで企業を宣伝したい場合やHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!公式PEASS&HackTricksスワッグを入手してくださいThe PEASS Family、当社の独占的なNFTsコレクションを発見してください💬 Discordグループまたはtelegramグループに参加**するか、Twitter 🐦 @hacktricks_liveをフォローしてください。**ハッキングトリックを共有するために、HackTricksHackTricks CloudのgithubリポジトリにPRを提出してください。

初期情報収集基本情報まず第一に、USBに良く知られたバイナリとライブラリ(単にUbuntuを取得してフォルダ_bin、_ / sbin、_ / lib、および_lib64_をコピーできます)を持っていることが推奨されます。その後、USBをマウントし、環境変数を変更してそれらのバイナリを使用します:export PATH=/mnt/usb/bin:/mnt/usb/sbinexport 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 infoifconfig -a || ip a #Network interfaces (promiscuous mode?)ps -ef #Running processesnetstat -anp #Proccess and portslsof -V #Open filesnetstat -rn; route #Routing tabledf; mount #Free space and mounted devicesfree #Meam and swap spacew #Who is connectedlast -Faiwx #Loginslsmod #What is loadedcat /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疑わしい情報基本情報を取得する際に、次のような奇妙な点をチェックする必要があります:Rootプロセス は通常、低いPIDで実行されます。そのため、大きなPIDで実行されているRootプロセスが見つかった場合は疑うべきです/etc/passwd 内でシェルを持たないユーザーの登録済みログイン を確認する/etc/shadow 内でシェルを持たないユーザーのパスワードハッシュ を確認するメモリーダンプ実行中のシステムのメモリを取得するには、LiME を使用することをお勧めします。 コンパイル するには、被害者のマシンが使用している同じカーネル を使用する必要があります。被害者のマシンに LiME やその他の何かをインストールすることはできない ため、それに多くの変更を加えてしまいますしたがって、Ubuntuの同一バージョンがある場合は、apt-get install lime-forensics-dkms を使用できます。 それ以外の場合は、LiME をgithubからダウンロードし、正しいカーネルヘッダーを使用してコンパイルする必要があります。被害者マシンの正確なカーネルヘッダー を取得するには、単にディレクトリ /lib/modules/<kernel version> をあなたのマシンにコピーし、それを使用して LiME をコンパイル します:make -C /lib/modules/<kernel version>/build M=$PWDsudo 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 diskdd 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" commandfile disk.imgdisk.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'simg_stat -t evidence.imgraw#You can list supported types withimg_stat -i listSupported 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 imagefsstat -i raw -f ext4 disk.imgFILE SYSTEM INFORMATION--------------------------------------------File System Type: Ext4Volume Name:Volume ID: 162850f203fd75afab4f1e4736a7e776Last 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 properlyLast mounted on: /mnt/disk0Source OS: Linux[...]#ls inside the imagefls -i raw -f ext4 disk.imgd/d 11: lost+foundd/d 12: Documentsd/d 8193: folder1d/d 8194: folder2V/V 65537: $OrphanFiles#ls inside folderfls -i raw -f ext4 disk.img 12r/r 16: secret.txt#cat file inside imageicat -i raw -f ext4 disk.img 16ThisisTheMasterSecret Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。 今すぐアクセス:既知のマルウェアを検索変更されたシステムファイル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 を使用してRPMデータベースをクエリし、インストールされたパッケージをリストします。これらのパッケージマネージャーの外で手動でインストールされたソフトウェアを特定するには、/usr/local/opt/usr/sbin/usr/bin/bin/sbin などのディレクトリを調査します。ディレクトリリストをシステム固有のコマンドと組み合わせて使用し、既知のパッケージに関連付けられていない実行可能ファイルを特定することで、すべてのインストールされたプログラムを検索を強化します。# Debian package and log detailscat /var/lib/dpkg/status | grep -E "Package:|Status:"cat /var/log/dpkg.log | grep installed# RedHat RPM database queryrpm -qa --root=/mntpath/var/lib/rpm# Listing directories for manual installationsls /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 filesfind / -type f -executable | grep <something> Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。 今すぐアクセスしてください:削除された実行中のバイナリの回復/tmp/exec から実行され、その後削除されたプロセスを想像してください。それを抽出することが可能ですcd /proc/3746/ #PID with the exec file deletedhead -1 maps #Get address of the file. It was 08048000-08049000dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver itAutostart の場所を調査するスケジュールされたタスクcat /var/spool/cron/crontabs/* \/var/spool/cron/atjobs \/var/spool/anacron \/etc/cron* \/etc/at* \/etc/anacrontab \/etc/incron.d/* \/var/spool/incron/* \#MacOSls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/サービスマルウェアがインストールされている可能性のあるパス:/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/:予期しないログがないか常に確認してください。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 Desktop: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 usbripusbrip ids download #Download USB ID databaseusbrip events history #Get USB history of your curent linux machineusbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user#Search for vid and/or pidusbrip ids download #Downlaod databaseusbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vidユーザーアカウントとログオンアクティビティのレビュー不審な名前やアカウント、または既知の不正イベントに近接して作成または使用されたアカウントを探すために、/etc/passwd/etc/shadow、およびセキュリティログを調査します。また、可能なsudoブルートフォース攻撃をチェックします。 さらに、ユーザーに与えられた予期しない特権を確認するために、_/etc/sudoers/etc/groups_などのファイルをチェックします。 最後に、パスワードのないアカウントや簡単に推測できるパスワードを持つアカウントを探します。ファイルシステムの調査マルウェア調査におけるファイルシステム構造の分析マルウェアインシデントを調査する際、ファイルシステムの構造は情報の重要な源であり、イベントの順序とマルウェアの内容を明らかにします。ただし、マルウェアの作者は、ファイルのタイムスタンプを変更したり、データ保存のためにファイルシステムを回避したりするなど、この分析を妨げる技術を開発しています。これらのアンチフォレンジック手法に対抗するためには、次のことが重要です:Autopsyなどのツールを使用してイベントタイムラインを視覚化するための徹底的なタイムライン分析を実施します。または、Sleuth Kitのmactimeを使用して詳細なタイムラインデータを取得します。攻撃者が使用するシェルやPHPスクリプトを含む、システムの$PATHに予期しないスクリプトを調査します。通常は特殊ファイルを含むはずの**/devを非典型的なファイル**を探しますが、マルウェア関連のファイルが存在する可能性があります。".. "(ドットドットスペース)や"..^G"(ドットドットコントロールG)などの名前の隠しファイルやディレクトリを検索します。これらは悪意のあるコンテンツを隠す可能性があります。find / -user root -perm -04000 -printコマンドを使用して、setuid rootファイルを特定します。これは、攻撃者に悪用される可能性のある権限の昇格ファイルを見つけます。inodeテーブル内の削除タイムスタンプを確認して、大量のファイル削除を検出します。これは、rootkitやトロイの存在を示す可能性があります。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```攻撃者がファイルを正規に見せるために時間を変更できるが、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://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems_Ch3.pdfhttps://www.plesk.com/blog/featured/linux-logs-explained/https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203書籍: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。 今すぐアクセスしてください:

Last updated