メモです

バイナリとかを調べてみます

WinのコマンドプロンプトでC(++)コンパイラを動かしたい、x86とx86-64ともに

Build Tools for Visual Studio 2022(ビルドツール for Visual Studio 2022)のインストール(Windows 上)
こちらを参考にさせていただきました。

1.Build Tools for Visual Studio 202をダウンロード

https://visualstudio.microsoft.com/ja/downloads/
こちらに行き、
「Build Tools for Visual Studio 2022」をダウンロードする。
"vs_BuildTools.exe"このファイルが取得できる。

2.Build Tools for Visual Studio 202 をインストール

"vs_BuildTools.exe"を実行してインストール。
インストールする項目は、「C++ によるデスクトップ開発」を選択する。

3.x86-64x86の実行ファイルを作成
  • x86-64実行ファイルを作成する。

「x64 Native Tools Command Prompt for VS 2022」を開く。

> where cl
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.34.31933\bin\Hostx64\x64\cl.exe

> cd %HOMEPATH%
> notepad.exe hello64.c
/* hello64.c */
#include <stdio.h>

int main() {
	printf("Hello, world!\n");
	printf("sizeof(size_t)=%ld\n", sizeof(size_t));
	return 0;
}
> cl hello64.c
> hello64.exe
Hello, world!
sizeof(size_t)=8
  • x86実行ファイルを作成する。

x86 Native Tools Command Prompt for VS 2022」を開く。

> where cl
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.34.31933\bin\Hostx86\x86\cl.exe

> cd %HOMEPATH%
> notepad.exe hello86.c
/* hello86.c */
#include <stdio.h>

int main() {
	printf("Hello, world!\n");
	printf("sizeof(size_t)=%ld\n", sizeof(size_t));
	return 0;
}
> cl hello86.c
> hello86.exe
Hello, world!
sizeof(size_t)=4

p.19 表層解析-ファイル形式の判別(「初めてのマルウェア解析」)

2.1ファイル形式の判別

  • ファイルシグネチャとは、一意性を持つバイト列のことでファイルのヘッダに書き込まれている。
  • PEファイルなら、ファイルの最初の2バイトにMZ(4D 5A)というファイルシグネチャが付く。
バイナリエディタ

https://mh-nexus.de/en/hxd/
HxDでHxDを開いてみると、

ファイルの先頭2バイトがMZ(4D 5A)となっていることがわかる。

UbuntuでxxdコマンドでHxDを開いてみると、

$ xxd -g 1 HxD.exe | less


こちらでも、ファイルの先頭2バイトがMZ(4D 5A)となっていることがわかる。

ファイル識別ツール
  • fileコマンド(Linux
# 32ビットの実行ファイル(PE32)
$ file hello86.exe 
hello86.exe: PE32 executable (console) Intel 80386, for MS Windows

# 64ビットの実行ファイル(PE32+)
$ file hello64.exe 
hello64.exe: PE32+ executable (console) x86-64, for MS Windows

# 64ビットの実行ファイル(PE32+)で、GUI
$ file HxD.exe 
HxD.exe: PE32+ executable (GUI) x86-64, for MS Windows

https://ntcore.com/files/CFF_Explorer.zip
ダウンロードしたzipを展開して、
"CFF Explorer.exe"
これを実行するだけ、
そして、Openで調べたいファイルを選択すると、

File type Portable Executable 64
File type Portable Executable 32
MD5 11BFE8942E084DF75524F56204454199
SHA1 8FE3F4827F21E331AAFA0FA2AA8B2FE562E65CD8

とか表示してくれる。
が、
ConsoleなのかGUIなのかは表示してくれない気がする。

Python

python-magicモジュールを使う。

>>> import magic
>>> magic.from_file(r'./hello86.exe')
'PE32 executable (console) Intel 80386, for MS Windows'

>>> magic.from_file(r'./hello64.exe')
'PE32+ executable (console) x86-64, for MS Windows'

>>> magic.from_file(r'./HxD.exe')
'PE32+ executable (GUI) x86-64, for MS Windows'

p.8 Linux VMのセットアップと設定(「初めてのマルウエア解析」)

https://www.packtpub.com/product/learning-malware-analysis/9781788392501
www.ohmsha.co.jp

0. ホストOS
エディション Windows 10 Home
バージョン 22H2
OS ビルド 19045.2546
プロセッサ Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2.80 GHz
実装RAM 32.0 GB (31.9 GB 使用可能)
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
2. VirtualBoxはWin10 Home(x64)にインストール

https://download.virtualbox.org/virtualbox/7.0.6/VirtualBox-7.0.6-155176-Win.exe
このインストーラを実行すると、

と言われるので、
Oracle VM VirtualBox 7.0 は Microsoft Visual C++ Redistributable 2019以降が必要ということなので、
https://visualstudio.microsoft.com/ja/downloads/#microsoft-visual-c-redistributable-for-visual-studio-2022
ここに行き、
x86をダウンロード(VC_redist.x64.exe)
して、
まず、"VC++ 2015-2022"をインストールする。

そして、VBをインストールする。
VBを終了させた状態で、

https://download.virtualbox.org/virtualbox/7.0.6/Oracle_VM_VirtualBox_Extension_Pack-7.0.6a-155176.vbox-extpack
これを実行する。

バージョン 7.0.6 r155176
3. ubuntu-18.04.5-desktop-amd64VBにインストールとゲストOSとホストOSの間で、ファイルのドラッグ&ドロップとコピペができるように設定する
名前 ubuntu-18.04.5-desktop-amd64(任意)
タイプ Linux
バージョン Ubuntu (64-bit)
Skip Unattached Installation チェックを入れる
メインメモリー 4096MB(デフォルトは2048MB)
プロセッサ 1CPU
Disk size 25GB(デフォルト)

login automaticallyにチェックを入れる(ユーザは自分ひとりなので)

Restart Now
CD-ROMは自動的にunmountされているので、Enter
ubuntuにログインとなる

忘れる前に、デバイスクリップボード共有とドラッグ&ドロップ を「双方向」にしておく。

ゲストOSにペーストするには:Ctrl-Shift-V
ゲストOSからコピーするには:Ctrl-Shift-C

Guest Additions Softwareを実行するためには、gccとmakeとperlが必要なので、
Ctrl-Alt-Tでターミナルアプリを起動させ、

$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove

$ sudo apt install gcc make perl

Guest Additions Softwareを挿入 -> RUN
Reboot

Upgrade Guest Additionsを実行。

Settings → Power → Blank screen=Never

Reboot

4. LinuxVMへツールのインストール
$ which python 
$
# pythonはインストールされていないことがわかる。

$ sudo apt install python-pip
# これを実行すると、
$ which python
/usr/bin/python
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9  4月 16  2018 /usr/bin/python -> python2.7
$ which python2
/usr/bin/python2
$ ls -l /usr/bin/python2
lrwxrwxrwx 1 root root 9  4月 16  2018 /usr/bin/python2 -> python2.7
$ python2 --version
Python 2.7.17
$ which python3
/usr/bin/python3
$ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9  2月 16 08:26 /usr/bin/python3 -> python3.6
$ python3 --version
Python 3.6.9

$ which pip
/usr/bin/pip
$ pip -V
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

# python -> python2 -> python2.7 (2.7.17)
# python3 -> python3.6 (3.6.9)

$ sudo python -m pip install --upgrade pip

$ pip -V
pip 20.3.4 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
# pip 9.0.1 -> 20.3.4
$ sudo apt install python-magic
$ sudo apt install upx
$ sudo python -m pip install pefile
$ sudo apt install yara
$ sudo pip install yara-python
$ sudo apt install ssdeep
$ sudo apt install build-essential # すでにインストールされている
$ sudo apt install libffi-dev
$ sudo apt install python # すでにインストールされている
$ sudo apt install python-dev # すでにインストールされている
$ sudo apt install libfuzzy-dev

$ pip list
setuptools    39.0.1
$ sudo python -m pip install --upgrade setuptools # setuptoolsをアップデートしておかないとssdeepをpipでアップデートできない
# setuptools 39.0.1 -> 44.1.1
$ sudo python -m pip install --upgrade ssdeep

$ sudo apt install wireshark
$ sudo apt install tshark