#!

路上に就職!

前回作成したキーロガーを少し解析しづらくしてみる。

前回、実験用にキーロガーを書き直したのでそのキーロガーを使用し少し解析しづらくしてみようと思います。

0x6d61.hateblo.jp

実験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に検知されてしまいました。

f:id:x6d61:20200209170409p:plain
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を試してみたいと思います。