ホゲゆに - UNIXハック道。アレも、これもUNIX化!UNIX(非)活用術。
- ホゲ過ぎて、秀和システムのサポートページも消えつつある。
UNIXの世界を楽しみながら探求してみよう。 本書では、UNIXの世界を楽しむため、いくつかのUNIX化の事例を解説しています。 ユーモアやジョークを交えて、楽しみながら、UNIXを知ることができます。 これからUNIXに触れる初心者にはUNIXにハマるための読み物として、 中級者にはハッキング手引きとして、 思わずニヤリとしながら楽しむことができる本です。
- 目次
ごあいさつ 本書の読み方 第1章 もうXつかわない 第2章 地球を守るvi入門 第3章 PDP-11で体験する創世記のUNIX 第4章 No Unix, No Life!いろんなものをUnix化する 第5章 MINIXで始めるカーネル・ハック
- ごあいさつ
- 本書の読み方
- 必要な知識・能力
- 動作環境
- ファイルのダウンロードは、サポートページから、
- 第1章 もうXつかわない
1.1 人はコンソールに還る 1.2 GNU Screenでコンソール富豪になる 1.3 コンソール de インターネット 1.4 コンソール de マルチメディア
- 1.1 人はコンソールに還る
Windows化するUnix 突然ですが、さようならX 日本語だって使いたい - kon 広々&高機能で日本語表示 - jfbterm emacsで日本語を入力する アンチemacs派も安心 - skkfep NOTE Linux, System V系Unixのランレベル NOTE FreeBSD 5.xでkonを使う NOTE Linuxカーネルのフレームバッファデバイスを有効にする COLUMN Xを使った似非コンソール
- 突然ですが、さようならX
- 第2章 地球を守るvi入門
2.1 viは環境に優しい 2.2 カーソル位置の移動 2.3 テキストの追加と変更 2.4 ファイルとシェルの操作 2.5 vi実用テクニック オマケ・求道者のためのed入門
3.1 3分で振り返るUNIXの歴史 3.2 PDP-11にUNIX V7をインストール 3.3 UNIX V7を探検する 3.4 viの感動を味わおう - 2BSDのインストール
4.1 犠牲者1 - DoCoMo Sigmarion II 4.2 犠牲者2 - Apple iPod 4.3 犠牲者3 - NINTENDO GAMECUBE 4.4 考察 - Much more Unixen in your life!
5.1 MINIXのアーキテクチャ 5.2 QEMUにMINIXをインストールする 5.3 MINIXの環境設定 5.4 カーネルハック事始め - シリアルコンソールに挑戦 5.5 MINIXは「終わった」のか?
ゲームで学ぶ探索アルゴリズム実践入門-第2章 開発環境の準備
- サンプルコードを実行しながら理解できるように、C++の開発環境を構築する。
エディション Windows 10 Home バージョン 22H2 インストール日 2023/02/27 OS ビルド 19045.2673 エクスペリエンス Windows Feature Experience Pack 120.2212.4190.0
- WSLが利用可能かを確認する。
- コマンドプロンプトを起動(一般ユーザ権限でOK)して、wslと入力して、wslの利用方法が表示されたということは、WSLはまだインストールされていないということ。
>wsl Copyright (c) Microsoft Corporation. All rights reserved. 使用方法: wsl.exe [Argument] 引数: --install・・・
- CPUの仮想化機能の確認
- WSL2を利用するには、CPUの仮想化機能を有効にする必要がある。
- CPUの仮想化機能が有効かを確認する。
- タスクマネージャ(Control-Alt-Delete)→ 詳細 → 「パフォーマンス」タブ → 仮想化:有効 !になっているのでOK。「無効」ならBIOSの設定が必要となる。
- WSL2を利用するには、CPUの仮想化機能を有効にする必要がある。
- ディストリビューションの導入
- コマンドプロンプトを一般ユーザ権限で実行して、
>wsl --install 要求された操作には管理者特権が必要です。 インストール中: 仮想マシン プラットフォーム 仮想マシン プラットフォーム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 インストール中: Ubuntu Ubuntu はインストールされました。 要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
-
- PCを再起動する。
- コマンドプロンプトが自動的に起動する。
Ubuntu は既にインストールされています。 Ubuntu を開始しています... Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username: whoami New password: Retype new password: passwd: password updated successfully Installation successful! To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage This message is shown once a day. To disable it please create the /home/whoami/.hushlogin file. whoami@PC-NAME:~$
Microsoft Windows [Version 10.0.19045.2673] (c) Microsoft Corporation. All rights reserved. C:\Users\whoami>wsl To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. whoami@PC-NAME:/mnt/c/Users/whoami$
- パッケージの一覧を更新
$ sudo apt update $ sudo apt upgrade -y # インストール済みのパッケージが最新版に更新される。
$ sudo apt install build-essential $ g++ --version g++ (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
OllyDbgでバイナリを追う(「デバッガによるx86プログラム解析入門」)
OllyDbgのインストールと日本語化
- www.ollydbg.de
- こちらがOllyDbgの公式サイト。
- OllyDbg 1.10をダウンロードする。
- odbg110.zipを展開すると、以下のファイルを"C:\APP\Olly\"に置く。
BOOKMARK.DLL Cmdline.dll dbghelp.dll license.txt OLLYDBG.EXE OLLYDBG.HLP PSAPI.DLL readme.txt register.txt
- OllyDbgの設定情報はレジストリではなくINIファイル("ollydbg.ini")に保存される仕様、関連ファイルはインストールフォルダに集約される。
- OllyDbgを起動せずに、日本語化に進むこと、OllyDbgは起動すると、終了時に自動で設定を保存する仕様になっているため。
- OllyDbg日本語化パッチの入手と適用
- http://hp.vector.co.jp/authors/VA028184/OllyDbg110J3a.lzh
- "OllyDbg110J3a.lzh"を展開すると、以下のファイルが展開される。
j10n140106.zip OllyDbg110_J.EXE Ver1.10J.txt
-
- OllyDbgフォルダ("C:\APP\Olly\")に移動する。
- j10n140106.zipは、OllyDbgでプログラムが参照する日本語文字列を表示可能にするプラグイン"xj10n.dll"なのでこれもOllyDbgフォルダ("C:\APP\Olly\")に置く。
j10n.txt j10n140_src.zip xj10n.dll
-
- OllyDbg110_J.EXEを実行する。
- OllyDbg.EXEを起動して、フォントの設定を行う。
- OllyDbgを右クリックして、管理者権限で実行する。
- オプション→環境設定→フォント→Terminal 6が選択されている状態で、「変更」ボタンをクリック→MS ゴシック→標準→11ポイント
p.006 pefileを使ってPEフォーマットを分析(マルウェアデータサイエンス)
www.malwaredatascience.com
まず、VMのova(BookVM.ova)を上のページ(Ubuntu Virtual Machine)からダウンロードしておく。
このダウンロードがなかなか出来ない。
BookVM.ovaをVBにインポートする。
そして、VMを起動させ、
上のページにかかれているように、
The username is "osboxes.org" and the password is "osboxes.org".
ということで進める。
まず、デバイスのクリップボード共有を双方向に設定して、
VMをrebootする。
これでターミナルの文字をコピペできるようになる。
$ cat /etc/os-release NAME="Ubuntu" VERSION="17.10 (Artful Aardvark)" # と分かる。 ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 17.10" VERSION_ID="17.10" 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=artful UBUNTU_CODENAME=artful
$ pwd /home/osboxes osboxes@osboxes:~$ ls -lF total 12 drwxr-xr-x 2 osboxes osboxes 4096 Oct 22 2017 Desktop/ drwxr-xr-x 2 osboxes osboxes 4096 Oct 22 2017 Downloads/ drwxr-xr-x 12 osboxes osboxes 4096 Sep 3 2018 malware_data_science/ # サンプルコードなどがすでにある。 $ ls -lF malware_data_science/ total 40 drwxr-xr-x 2 osboxes osboxes 4096 Sep 3 2018 ch1/ drwxr-xr-x 4 osboxes osboxes 4096 Sep 3 2018 ch11/ drwxr-xr-x 2 osboxes osboxes 4096 Sep 3 2018 ch2/ drwxr-xr-x 2 osboxes osboxes 4096 Sep 3 2018 ch3/ drwxr-xr-x 4 osboxes osboxes 4096 Sep 3 2018 ch4/ drwxr-xr-x 4 osboxes osboxes 4096 Sep 3 2018 ch5/ drwxr-xr-x 2 osboxes osboxes 4096 Sep 3 2018 ch6/ drwxr-xr-x 2 osboxes osboxes 4096 Sep 3 2018 ch7/ drwxr-xr-x 4 osboxes osboxes 4096 Sep 3 2018 ch8/ drwxr-xr-x 4 osboxes osboxes 4096 Sep 3 2018 ch9/
1.2 pefileを使ってPEフォーマットを分析する
- PythonモジュールのpefileはPEファイルを調べるためのデファクトスタンダードなライブラリ(Ero Carerraによって作成・管理されている)
-
- ch1/ircbot.exeを分析する。
$ pip -V pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7) $ pip list installed | grep pefile DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning. pefile (2017.11.5) $ pip install pefile # VMには既にインストールされているので、これを実行する必要はない。
$ cd ~/malware_data_science/ch $ ls fakepdfmalware.exe fakeword.exe ircbot.exe $ python --version Python 2.7.14 $ python >>> import pefile >>> pe = pefile.PE("ircbot.exe") >>> for section in pe.sections: ... print(section.Name, hex(section.VirtualAddress), hex(section.Misc_VirtualSize), section.SizeOfRawData) ... ('.text\x00\x00\x00', '0x1000', '0x32830', 207360) ('.rdata\x00\x00', '0x34000', '0x427a', 17408) ('.data\x00\x00\x00', '0x39000', '0x5cff8', 10752) ('.idata\x00\x00', '0x96000', '0xbb0', 3072) ('.reloc\x00\x00', '0x97000', '0x211d', 8704)
Ghidra on Win10、インストール
JavaをWin10にインストール
learn.microsoft.com
ここの、
Winのx64のmsiをダウンロードする。
現時点では、17.0.6が最新バージョンみたい。
https://aka.ms/download-jdk/microsoft-jdk-17.0.6-windows-x64.msi
インストーラに従いインストールするだけ。
PCのリブートとかは必要なし。
Ghidraのインストール
github.com
こちらに行き、
10.2.3が最新バージョンみたいなので、
これをダウンロードする。
https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_10.2.3_build/ghidra_10.2.3_PUBLIC_20230208.zip
zipを展開すると、
置き場所は下みたいな感じで、
"C:\Ghidra\ghidra_10.2.3_PUBLIC_20230208\"
ghidraRun.bat
があるので、
これをダブルクリックするとGhidraが起動する。
(タスクバーにピン留めができないが。。。)
p.28 表層解析-文字列の抽出(「初めてのマルウェア解析」)
文字列とはファイルに埋め込まれたASCIIおよびUnicodeで表現可能な文字列のこと。
stringsコマンドによる文字列の抽出(Linux)
- stringsコマンドはデフォルトで4文字以上のASCII文字列を抽出する。
- -aオプションによりファイル全体から文字列を抽出する。
- -elオプションによりUnicode(1文字あたり2バイト)文字列を抽出する。
$ strings HxD.exe | grep ^[^._] | less This program must be run under Win64 `.data @.pdata @.rsrc Boolean False $ strings -a -el HxD.exe | grep ^[^._] | less
pestudioによる文字列の抽出(Windows)
p.22 表層解析-マルウェアのフィンガープリント(「初めてのマルウェア解析」)
フィンガープリント
ツールによるハッシュ値生成
- Linuxはmd5sum, sha256sum, sha1sum
$ md5sum HxD.exe 86408be71abc0d8cbd60914e51500ef0 HxD.exe $ sha256sum HxD.exe 0c0d54b28674f9311e7dc9b164bc711d04ed1f1281ac3e8ea5a1435ed1c4bad9 HxD.exe $ sha1sum HxD.exe eac1d136f9ec432fa0256c4aab53ec5e84db2f85 HxD.exe
- Winは色々あるが、HashMyFilesがいいらしい。
https://www.nirsoft.net/utils/hashmyfiles.zip
zipを展開すると、
hashmyfile.exe
が出来上がる。
日本語化のためには、
https://www.nirsoft.net/utils/trans/hashmyfiles_japanese.zip
このzipを展開して、
出てきた、
HashMyFiles_lng.ini
をhasymyfile.exeと同じフォルダに入れるだけ。
同じハッシュ値を持つファイルは同じ色で強調表示してくれる。
Pythonによるハッシュ値生成
- hashlibモジュールでハッシュ値を生成できる。
>>> import hashlib >>> content = open(r"HxD.exe","rb").read() >>> print hashlib.md5(content).hexdigest() 86408be71abc0d8cbd60914e51500ef0 >>> print hashlib.sha256(content).hexdigest() 0c0d54b28674f9311e7dc9b164bc711d04ed1f1281ac3e8ea5a1435ed1c4bad9 >>> print hashlib.sha1(content).hexdigest() eac1d136f9ec432fa0256c4aab53ec5e84db2f85