前回作成したキーロガーを少し解析しづらくしてみる。
前回、実験用にキーロガーを書き直したのでそのキーロガーを使用し少し解析しづらくしてみようと思います。
実験1 Hyperionを使用する。
Hyperionとは対象のPEファイルを暗号化し実行時に復号し実行する。パッカーらしいです。
下記のリンクからHyperionのコードをダウンロードします。
http://nullsecurity.net/tools/binary.html
インストール
unzip Hyperion-2.2.zip cd Hyperion-2.2 sudo apt install i686-w64-mingw32-gcc
zipを解答しmingw-gccをインストールします。
次にMakefileのコンパイラの項目を書き換えます。
CC = gcc ↓ CC = i686-w64-mingw32-gcc
makeをするとhyperion.exeが同じディレクトリに出来上がってると思います。
実行方法は暗号化したいファイルと暗号化したファイルを指定するだけです。
hyperion.exe <暗号化したいPEファイル> <暗号化したPEファイル>
では実際に使用してみます。
Z:\Downloads\Hyperion-2.2>hyperion.exe -v dist\basickeylogger.exe C:\users\user\Desktop\basickeylogger2.exe ------------------------------- | Stage 1: Analyzing input file | ------------------------------- Opening dist\basickeylogger.exe Successfully copied file to memory location: 0xb65020 Found valid MZ signature Found pointer to PE Header: 0x108 Found valid PE signature Found 64 bit binary Image base is 0x140000000 Image size is 0x100056000 ------------------------------- | Stage 2: Generating ASM files | ------------------------------- Input file size + Checksum: 0x5648fa Rounded up to a multiple of key size: 0x564900 INFILE_SIZE equ 0x564900 written to Src\Container\64\infile_size.inc Generated checksum: 0x2b0a22ef Generated Encryption Key: 0x2 0x0 0x1 0x1 0x3 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 Written encrypted input file as FASM array to: Src\Container\64\infile_array.inc IMAGE_BASE equ 0x140000000 written to Src\Container\64\image_base.inc IMAGE_SIZE equ 0x56000 written to Src\Container\64\image_size.inc REAL_KEY_SIZE equ 0x6 written to Src\Container\64\key_size.inc REAL_KEY_RANGE equ 0x4 written to Src\Container\64\key_size.inc include 'logfile_disable.asm' written to Src\Container\64\logfile_select.asm include '..\..\Payloads\Aes\64\aes.inc' written to Src\Container\64\decryption_payload.asm include '..\..\Payloads\Aes\64\aes.asm' written to Src\Container\64\decryption_payload.asm include '..\..\Payloads\Aes\64\decryptexecutable.asm' written to Src\Container\64\decryption_payload.asm -------------------------------- | Stage 3: Generating Executable | -------------------------------- Starting FASM with the following parameters: Commandline: Fasm\FASM.EXE Src\Container\64\main.asm C:\users\user\Desktop\basickeylogger2.exe FASM Working Directory: Z:\Downloads\Hyperion-2.2 flat assembler version 1.71.54 (1048576 kilobytes memory) 6 passes, 6.3 seconds, 5676544 bytes. Done :-) Z:\Downloads\Hyperion-2.2>
実行して暗号化されたPEファイルを作成したところWindows Defenderに検知されてしまいました。 少し解析しづらくするはずが検知されてしまったので実験失敗です。次の実験をしてみます。
実験2 PyArmorを使用してPythonコードそのものを難読化する。
前回の実験ではPyinstallerで実行ファイル化したものを暗号化しましたが今回はソースコードそのものを難読化してみたいと思います。
PyArmorのインストールは簡単でpipでパッケージを追加するだけです。
pip install pyarmor
難読化するにはpyarmor o pyファイル
とコマンドを実行すれば難読化することができます。
mkdir work cd work cp basickeylogger.py . pyarmor o basickeylogger.py
pyarmorを実行したあとにdistディレクトリが作成されるのでPyinstallerで実行ファイル化すれば難読化を施したキーロガーを作成することができます。
次回はpeCloakを試してみたいと思います。