Linux Forensics
Last updated
Last updated
Trickestを使用して、世界で最も高度なコミュニティツールによって駆動されるワークフローを簡単に構築し、自動化します。 今すぐアクセスを取得:
まず、良く知られたバイナリとライブラリが入ったいくつかのUSBを持っていることをお勧めします(ubuntuを取得して、フォルダ /bin, /sbin, /lib, および /lib64 をコピーするだけで済みます)、次にUSBをマウントし、これらのバイナリを使用するように環境変数を変更します:
システムを良好で既知のバイナリを使用するように設定したら、基本的な情報を抽出し始めることができます:
基本情報を取得する際には、以下のような奇妙な事柄を確認する必要があります:
ルートプロセスは通常、低いPIDで実行されるため、大きなPIDを持つルートプロセスを見つけた場合は疑うべきです
/etc/passwd
内のシェルを持たないユーザーの登録されたログインを確認します
シェルを持たないユーザーのために、/etc/shadow
内のパスワードハッシュを確認します
実行中のシステムのメモリを取得するには、LiMEを使用することをお勧めします。 コンパイルするには、被害者のマシンが使用している同じカーネルを使用する必要があります。
被害者のマシンにLiMEやその他のものをインストールすることはできないことを覚えておいてください。そうすると、いくつかの変更が加わります
したがって、同一のUbuntuバージョンがある場合は、apt-get install lime-forensics-dkms
を使用できます。
他の場合は、githubからLiMEをダウンロードし、正しいカーネルヘッダーでコンパイルする必要があります。被害者のマシンの正確なカーネルヘッダーを取得するには、単に/lib/modules/<kernel version>
ディレクトリを自分のマシンにコピーし、それを使用してLiMEをコンパイルします:
LiMEは3つのフォーマットをサポートしています:
Raw(すべてのセグメントが連結されたもの)
Padded(Rawと同じですが、右側のビットにゼロが追加されています)
Lime(メタデータ付きの推奨フォーマット)
LiMEは、path=tcp:4444
のようなもので、システムに保存するのではなく、ネットワーク経由でダンプを送信することもできます。
まず最初に、システムをシャットダウンする必要があります。これは常に選択肢ではなく、時にはシステムが会社がシャットダウンできないプロダクションサーバーであることがあります。
システムをシャットダウンするには2つの方法があります:通常のシャットダウンと**「プラグを抜く」シャットダウンです。最初の方法では、プロセスが通常通り終了し、ファイルシステムが同期されることを許可しますが、同時にマルウェアが証拠を破壊する可能性もあります。「プラグを抜く」アプローチは情報の損失を伴う可能性があります(すでにメモリのイメージを取得しているため、失われる情報はあまりありません)し、マルウェアは何もできる機会がありません。したがって、マルウェアの可能性があると疑う場合は、システムでsync
** コマンドを実行し、プラグを抜いてください。
ケースに関連する何かにコンピュータを接続する前に、読み取り専用としてマウントされることを確認することが重要です。情報を変更しないようにするためです。
データがこれ以上ないディスクイメージをイメージングする。
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。 今すぐアクセスを取得:
Linuxは、潜在的に問題のあるファイルを特定するために重要なシステムコンポーネントの整合性を確保するためのツールを提供します。
RedHatベースのシステム: rpm -Va
を使用して包括的なチェックを行います。
Debianベースのシステム: 初期検証にはdpkg --verify
を使用し、その後debsums | grep -v "OK$"
(apt-get install debsums
でdebsums
をインストールした後)を実行して問題を特定します。
マルウェアを見つけるのに役立つツールについて学ぶには、以下のページをお読みください:
Malware AnalysisDebianおよび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
_のようなディレクトリを探索します。ディレクトリリストとシステム固有のコマンドを組み合わせて、既知のパッケージに関連付けられていない実行可能ファイルを特定し、インストールされたすべてのプログラムの検索を強化します。
Trickestを使用して、世界で最も高度なコミュニティツールによって駆動されるワークフローを簡単に構築し、自動化します。 今すぐアクセスを取得:
/tmp/execから実行され、その後削除されたプロセスを想像してみてください。それを抽出することが可能です。
マルウェアがサービスとしてインストールされる可能性のあるパス:
/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デスクトップ: ~/.recently-used.xbel を調べて、Gnomeアプリケーションを介して最近アクセスされたファイルを確認します。
Firefox/Chrome: ~/.mozilla/firefox または ~/.config/google-chrome でブラウザの履歴やダウンロードを確認し、疑わしい活動を探します。
VIM: ~/.viminfo を確認し、アクセスされたファイルパスや検索履歴などの使用詳細を確認します。
Open Office: 侵害されたファイルを示す可能性のある最近の文書アクセスを確認します。
FTP/SFTP: ~/.ftp_history または ~/.sftp_history のログを確認し、不正なファイル転送を探します。
MySQL: ~/.mysql_history を調査し、実行されたMySQLクエリを確認し、不正なデータベース活動を明らかにします。
Less: ~/.lesshst を分析し、表示されたファイルや実行されたコマンドを含む使用履歴を確認します。
Git: ~/.gitconfig およびプロジェクトの .git/logs を調べて、リポジトリの変更を確認します。
usbrip は、Linuxのログファイル(ディストリビューションに応じて /var/log/syslog*
または /var/log/messages*
)を解析してUSBイベント履歴テーブルを構築するために書かれた小さなソフトウェアです。
使用されたすべてのUSBを知ることは興味深いことであり、"違反イベント"(そのリストに含まれていないUSBの使用)を見つけるために、承認されたUSBのリストがあるとさらに有用です。
More examples and info inside the github: https://github.com/snovvcrash/usbrip
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
/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)をチェックします。これらはマルウェアによって変更される可能性があります。
注意してください、攻撃者は時間を変更してファイルを正当なものに見せることができますが、inodeを変更することはできません。同じフォルダ内の他のファイルと同時に作成および変更されたことを示すファイルがあり、しかしinodeが予期せず大きい場合、そのファイルのタイムスタンプは変更されています。
ファイルシステムのバージョンを比較し、変更点を特定するために、簡略化されたgit diff
コマンドを使用します:
新しいファイルを見つけるために、2つのディレクトリを比較します:
変更されたコンテンツ、特定の行を無視しながら変更をリストします:
削除されたファイルを検出するために:
フィルターオプション (--diff-filter
) は、追加された (A
)、削除された (D
)、または変更された (M
) ファイルなど、特定の変更に絞り込むのに役立ちます。
A
: 追加されたファイル
C
: コピーされたファイル
D
: 削除されたファイル
M
: 変更されたファイル
R
: 名前が変更されたファイル
T
: タイプの変更(例:ファイルからシンボリックリンクへ)
U
: マージされていないファイル
X
: 不明なファイル
B
: 壊れたファイル
書籍: Linuxシステムのマルウェアフォレンジックフィールドガイド: デジタルフォレンジックフィールドガイド
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。 今すぐアクセスを取得:
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する: HackTricks Training GCP Red Team Expert (GRTE)