概要
RLOとは,Right-to-Left Overrideの略語であり,ファイルの拡張子偽装でよく用いられる方法です.実際に悪性(?)の実行ファイル"pacfdp.exe"を"pacexe.pdf"に偽装します.ただし,悪性の実行ファイルはマルウェアでないので,そこのところはご注意ください.
まず実行ファイルをつくる
実装するのは,時間をカウントしてコンソール状に文字列を標準出力するコードです.何も知らない人からしたら,悪性のコードに見えるかもしれませんが,特にC&Cサーバと通信しているわけでもないので問題ありません.例なので,幼稚なコードですがご勘弁ください.
test.c
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <windows.h>
int main(void) {
unsigned int usecs = 2000;
printf("Hello Virus\n");
Sleep(usecs/2);
printf("ダウンロード中....");
Sleep(usecs);
printf("[完了]\n");
printf("インストール中....");
Sleep(usecs);
printf("[完了]\n");
printf("実行しました...");
Sleep(usecs);
printf("[進行中]\n");
return 0;
}
次のようにコンパイルして実行します.
C:\Users\Sheltie> gcc test.c
C:\Users\Sheltie> a.exe
Hello Virus
ダウンロード中....[完了]
インストール中....[完了]
実行しました....[進行中]
実行ファイルの拡張子を偽装する
さっきのバイナリ"a.exe"を次のようにリネームします.
- メモ帳を開き、「pac」(なんでもいい)と入力します.
- エディタ上で右クリック→Unicode制御文字の挿入→RLOをクリックします.
- 「pac」の続きから「fdp.exe」と入力すると,pacexe.pdfと表示されます.
- さっきのバイナリ"a.exe"を右クリックして名前の変更から
メモ帳の文字列をコピーして貼り付けると,「pacexe.pdf」と表示されます.
pacexe.pdfをダブルクリックすると...
後はアイコンを偽装すればいいのだが...
dirコマンドでコンソールに標準出力させると,ウソがバレます.
おわりに
遊んだだけなので,悪いことには利用しないようにしましょう.こういう風になってたんだと古典を鑑賞するかのように読んでいただければ幸いです.