Capcomがランサムウェアの被害にあったとニュースがありました。
犯人は「Team of Ragnar Locker」と自称していて、使用されたランサムウェアも「Ragnar Locker」と呼ばれているようです。
そして三井物産セキュアディレクションのブログにCapcomで使われたランサムウェアの解析結果が掲載されていて、exeファイルにデジタル署名が付与されていると記載がありました。
署名情報の画像も載っていて、ロシアの有限会社の署名&GlobalSignの正規の証明書でした。
マルウェアにデジタル署名が付与されていることはよくあるそうで、2010年のF-Secureのブログにもデジタル署名されたマルウェアの話が載ってました。
(盗んだ証明書使ったり、署名情報をコピペするらしい(コピペの場合、認証(って言うのか?)は通らない))
ということで、exeファイルのデジタル署名に興味を持ったので、exeファイルと証明書を作成してデジタル署名の付与を試してみた。
exeの作成
MessageBoxを表示するだけのexeファイルを作成する。
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
MessageBox(NULL, TEXT("Hello, world!"), TEXT("Hello"), MB_OK | MB_ICONINFORMATION);
return 0;
}
作成したexeの実行結果
証明書の作成
OpenSSLで証明書を作る。自己署名証明書にしました。
証明書を作成したら、PKCS#12(pfx)に変換する。
openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr
openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
openssl pkcs12 -export -inkey server.key -in server.crt -out server.pfx
作成した証明書(Subject名は適当)
デジタル署名の付与
「SignTool.exe」でexeに署名を付与する。
「SignTool.exe」はVisual Studioに付属のものを使います。
signtool.exe sign /f server.pfx /t http://timestamp.digicert.com msgbox.exe
Done Adding Additional Store
Successfully signed: msgbox.exe
「/t <URL>」オプションを付けると署名時刻が付くようです。
署名者の情報の「電子メール」欄は、証明書のサブジェクト情報となりました。(CSR作成時に設定したもの)
「/t <URL>」オプションを付けない場合、署名時刻はなし(利用不可と表示)となりました。
ファイルサイズは下記の通りでした。
「署名なし」 <「 署名あり(timestampなし) < 「署名あり(timestampあり)」
exeタイプ |
ファイルサイズ(Byte) |
サイズ増(Byte) |
署名なし.exe |
9,216 |
- |
署名あり(timestampなし).exe |
10,736 |
+1,520 |
署名あり(timestampあり).exe |
14,656 |
+3,920 |
感想
デジタル署名の「電子メール」がCSR作成時に設定した「メールアドレス」となることが分かりました。
Capcomで使用されたランサムウェアはGlobalSignの正規の証明書で署名されているので、デジタル署名に記載されているメールアドレスは証明書発行時点(2020/06/09)では存在していたということでしょうか。
2020/11/14時点、DNSレコードを検索しても該当のドメインは見つかりませんでした。ググって調べた情報だと、2020/10/12頃はAレコードは引けていたようです。