メモです

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

p.006 pefileを使ってPEフォーマットを分析(マルウェアデータサイエンス)

www.malwaredatascience.com
まず、VMova(BookVM.ova)を上のページ(Ubuntu Virtual Machine)からダウンロードしておく。
このダウンロードがなかなか出来ない。
BookVM.ovaVBにインポートする。
そして、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フォーマットを分析する

github.com

    • 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)