2016年03月07日

銀行が推奨しているSaAT Netizenのログの暗号を解除してみた

日本の 都市・地方銀行で採用されている韓国製SaAT NetizenにSwiftKeyと同じ脆弱性
多くの都市銀行で採用されている韓国製SaAT Netizenをハッキングできるか実験してみた

ネタがないんで、さらに V3Hunt.dll をいじって遊んでみました。

V3Hunt.DLL を解析してみたところ 5.5.0.4 の場合オフセット 0x36D6 にログ出力関数があることが分かりました



LogOutPut(Bool Flag, char *vptr, vlist *vlist)
 SUB_L100036D6:
          push    ebp
          mov    ebp,esp
          mov    eax,00002244h
          call    SUB_L10009050
          cmp    dword ptr [L100188AC],FFFFFFFFh
          push    esi
          jz     L10003858
          cmp    dword ptr [ebp+0Ch],00000000h // Log 自体出力しない
          jz     L10003858
          cmp    dword ptr [ebp+08h],00000000h // Debugger に出力するフラグ
          jnz    L10003729                                     
          lea    eax,[ebp+10h]
          push    eax
          lea    eax,[ebp-00001244h]
          push    [ebp+0Ch]
          push    eax
          call    SUB_L10008FFA
          add    esp,0000000Ch
          lea    eax,[ebp-00001244h]
          push    eax
          call    [KERNEL32.dll!OutputDebugStringA]
          jmp    L10003858
 L10003729:
          push    ebx
          lea    eax,[ebp+10h]
          push    edi
          push    eax
          push    [ebp+0Ch]
          lea    eax,[ebp-00001244h]
          push    eax
          call    SUB_L10008FFA
          lea    eax,[ebp-0Ch]
          push    eax
          call    SUB_L10008F76
          lea    eax,[ebp-18h]
          push    eax
          call    SUB_L10008EFD
          add    esp,00000014h
          lea    eax,[ebp-00001244h]
          push    eax
          lea    eax,[ebp-18h]
          push    eax
          lea    eax,[ebp-0Ch]
          push    eax
          call    [KERNEL32.dll!GetCurrentProcessId]
          push    eax
          lea    eax,[ebp-00002244h]
          push    SSZ10018914___ld___s__s__s
          push    eax
          call    SUB_L10008EAB // プロセス情報と日時を付加
          lea    eax,[ebp-00002244h]
          push    eax
          call    SUB_L10008E30
          push    000004E4h // Key
          lea    ecx,[ebp-00002244h]
          push    eax
          push    ecx
          mov    [ebp+08h],eax
          push    eax
          lea    eax,[ebp-00001244h]
          push    eax
          call   
SUB_L1000385B
          mov    esi,[USER32.dll!wsprintfA]
          add    esp,00000030h
          mov    ebx,L1001C95C
          mov    edi,SSZ1001890C__s__s
          push    SSZ10018900_supdate_log
          push    ebx
          lea    eax,[ebp-00000140h]
          push    edi
          push    eax
          call    esi
          lea    eax,[ebp-3Ch]
          push    eax
          lea    eax,[ebp-00000140h]
          push    eax
          call    SUB_L10008AFC
          mov    eax,[ebp-28h]
          add    esp,00000018h
          cmp    eax,[L100188AC]
          jc     L10003814
          push    SSZ100188F0_supdate2_log
          push    ebx
          lea    eax,[ebp-00000244h]
          push    edi
          push    eax
          call    esi
          add    esp,00000010h
          lea    eax,[ebp-00000244h]
          push    00000000h
          push    eax
          lea    eax,[ebp-00000140h]
          push    eax
          call    [KERNEL32.dll!CopyFileA]
          push    L100188EC
          jmp    L10003819
 L10003814:
          push    L100188E8
 L10003819:
          lea    eax,[ebp-00000140h]
          push    eax
          call    SUB_L10008A31
          pop    ecx
          mov    esi,eax
          pop    ecx
          pop    edi
          test    esi,esi
          pop    ebx
          jz     L10003858
          push    esi
          push    00000001h
          lea    eax,[ebp+08h]
          push    00000004h
          push    eax
          call    SUB_L100088C7
          push    esi
          push    00000001h
          push    [ebp+08h]
          lea    eax,[ebp-00001244h]
          push    eax
          call    SUB_L100088C7
          push    esi
          call    SUB_L1000884A
          add    esp,00000024h
 L10003858:
          pop    esi
          leave
          retn
ざっとこんな感じですね。 解析時間は5分ほど。

水色のところが暗号化してる所なので、呼び出し先の SUB_L1000385B を以下のように書き換えます
 SUB_L1001518A:
          push    ebp
          mov    ebp,esp
          push    [ebp+10h]
          push    [ebp+08h]
          call    [KERNEL32.dll!lstrcpyA]
          leave
          retn

[7700] 03/07/16 19:57:39 __GetUpdateData(Sec=AOS,Type=0x0004,OS=0x0002,CP=0x03a4,Flag=0x00000000)
[7700] 03/07/16 19:57:41 __GetUpdateData(Sec=AOS,Type=0x0004,OS=0x0002,CP=0x03a4,Flag=0x00000000)
はい。生のLogデータ出てきました。

暗号化してるところは、どうやら
SUB_L10008030 の様です。

(char *target, DWORD size, ); こんな感じかな?
          push    [ebp+0Ch]
          push    00000000h
          push    edi
          call    SUB_L10008030
          add    esp,0000000Ch
          cmp    dword ptr [ebp+14h],00000000h
          jle    L100038BC
          mov    ecx,edi
          sub    esi,edi
          mov    edi,[ebp+14h]
 L10003895:
          mov    al,[esi+ecx]
          xor    edx,edx
          mov    dl,[ebp+19h]
          xor    al,dl
          mov    edx,000058BFh
          mov    [ecx],al
          movzx    ax,al
          add    eax,[ebp+18h]
          imul    eax,00003193h
          sub    edx,eax
          inc    ecx
          dec    edi
          mov    [ebp+18h],edx
          jnz    L10003895
 L100038BC:
          xor    eax,eax
          jmp    L100038C3
 L100038C0:

  for (DWORD i = 0; i < nInLen; i ++)
  {
    pOutBuf[i] = pInBuf[i] ^ (key >> 8) & 0xFF;
    key = 0x58BF - (pOutBuf[i] + key) * 0x3193;
  }
ソースはこうなりますね。ハッシュかけてるだけ

赤字の部分つぶせば暗号化阻止できるようです・ω・


そこで、暗号化済みのファイルも復号するソフト書いてみましょう
    FILE *fs;
    FILE *fw;
    DWORD sz,zz;
    BYTE *cs;
    fs=fopen(input_file,"rb");
    fw=fopen(output_file, "wb");
    do{
    zz = fread(&sz, 1,4,fs);
    if(zz==0)break;
    cs= new BYTE[sz+4];
    zz = fread(cs, 1,sz,fs);
    if(zz==0)break;

    long current_char;
    int modifier = 0x4e4;
    for(int i = 0; i < sz; i++){
        current_char = cs[i];
        cs[i] = (char)(current_char ^ (modifier >> 8));
        modifier += current_char;
        modifier *= 0xCE6D;
        modifier += 0x58BF;
        modifier %= 0x10000;
    }
    cs[i]=0xd; //改行を末尾に追加
    cs[i+1]=0xa;
    zz =fwrite(cs, 1,sz+2,fw);

    }while(1);
    fclose(fs);
    fclose(fw);
試しに復号ソフト作ってみたらこんな感じ。

先週、Netizen 本体いじってた時のログを復号してみた
[13608] 03/03/16 17:47:22 [V3HUNT][CheckFileCRC()] (ahn.ui : 0x925710E4) != 0xC8E588B3(File C:\Users\Mofmo\AppData\Local\Temp\saaC83A.tmp\Netizen_Setup.exe)
[11312] 03/03/16 17:51:24 __GetUpdateData(Sec=AOS,Type=0x0004,OS=0x0002,CP=0x03a4,Flag=0x00000000)
[11312] 03/03/16 17:52:47 __GetUpdateData(Sec=AOS,Type=0x0004,OS=0x0002,CP=0x03a4,Flag=0x00000000)
[11312] 03/03/16 17:52:48 [V3HUNT][CheckFileCRC()] (ahn.ui : 0x925710E4) != 0x3B826DBB(File C:\Users\Mofmof\AppData\Local\Temp\saaC3C.tmp\Netizen_Setup.exe)
[14900] 03/03/16 17:56:22 __GetUpdateData(Sec=AOS,Type=0x0004,OS=0x0002,CP=0x03a4,Flag=0x00000000)
[14900] 03/03/16 17:58:25 __GetUpdateData(Sec=AOS,Type=0x0004,OS=0x0002,CP=0x03a4,Flag=0x00000000)
[19780] 03/03/16 18:00:03 __GetUpdateData(Sec=AOS,Type=0x0004,OS=0x0002,CP=0x03a4,Flag=0x00000000)
[19780] 03/03/16 18:00:03 GetUpdateData2:CRCerr
[19780] 03/03/16 18:00:04 __GetUpdateData(Sec=AOS,Type=0x0004,OS=0x0002,CP=0x03a4,Flag=0x00000000)
CRCいじれるか調べてたから面白いログが出てるね・ω・

韓国 Ahnlab V3 製品の Log の暗号解除をアプリにしてみた



blackwingcat at 08:30│Comments(2)TrackBack(0) | |
このエントリーをはてなブックマークに追加
Security | 韓国・中国製ソフト

Twitter Feedback

トラックバックURL

この記事へのコメント

1. Posted by 名無し   2016年06月11日 23:56
これはどうしようもないな
こんなんでハッキングとか騒がれたら
騒いだ奴の技術の低さに笑いますね
2. Posted by 黒翼猫   2016年06月12日 04:11
そーですね、暗号の復号と整合性チェックのAPIまで提供して、低レベルの解析で攻撃用のスクリプトかけちゃうような韓国のソフト使っちゃってるんだからどうしよもないですね(棒)

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
livedoor プロフィール
My PC
SNOWSTORM(P5E3 Premium)
OS:Win2000AdvancedSv
CPU:Xeon(4Core) 2.83G
Memory:8G
VGA:NVIDIA GTX 780Ti
HDD:SSD(32G)
    +SATA(540G+180G)
Crystal SCR:244765
SNOWFOX2(W860CU)
CPU:Core i5-540M(2.53G)
OS:Win2000Pro
Memory:4G
VGA:Geforce GTX285M
HDD:SSD(160G)
Crystal SCR:176460
SNOWMOBILE3(CF-J10S)
CPU:Core i5-2410M(2.3G)
VGA:Intel HD Graphics
HDD:SSD(128G)
Windows2000
Memory:6G
Crystal SCR:133495
SNOWMOBILE(N10Jc/故障)
Windows2000/XP Home
Crystal SCR:38316
SNOWLEO(MA206J/A/休止)
OS:OSX 10.4 +
Windows2000Pro(Solo動作)
Crystal SCR:24061
Windows 2000の セキュリティ対策について
FFR yarai(脆弱性防御)
SymantecEndpointSecurity 11 MR7
Windows Defender
記事検索
訪問者数

    今週のアクセス数

    Win2000お勧め
    お勧め記事
    Twitter Client Mo-Footer
    .NET FrameworkのUninstall
    lolifox 0.3.8.x
    WindowsのシャットダウンTips
    Fox Launcher
    ウィルス感染を手動で見つける方法
    Unknown Hard Errorとサルベージ
    Dependency Walker 日本語化
    Ultra VNC 1.0.6/1.0.8 を日本語化
    IME補完計画
    BSoD(ブルースクリーン)特集
    デフラグ時の4つの心得
    不明なデバイス探し
    SETUPAPI/NTDLLBugFix
    DNSデボルブ用更新[KB957579]
    最新 update.sys!
    4Thread以上のCPU最適化
    Win2000マルチコアで最適化
    Windows 2000の通信速度改善1
    Windows 2000の通信速度改善2
    内蔵簡易FireWallを使う
    ワームに感染しないインストール
    Remote Desktop Client
    IME 辞書 Tips
    Win2000用セキュリティSOFT
    不要なファイルの削除
    Win2000カスタマイズ
    便利なキーボードショートカット
    6月末まで使える体験版セキュリティ

    非対応ハード動作編
    HTC NDIS Driver
    Intel HD Graphic Driver
    VMWare Player 3.1.x
    Conexant HD Audio Driver
    NVIDIA WHQL Driver
    Intel Chipset 最新 INF
    Sentelic Finger Pad Driver
    ATI Legacy Driver 10.2
    AMD Radeon Driver 8〜11
    ATI Ahci/Raid Driver
    Intel SATA AHCI Driver
    D21LC(eMobile)
    USB-WSIM
    UVC カメラ
    Logicool Webcam
    Logicool ゲームパッド
    XBOX360用コントローラー
    Logicool Mouse
    Microsoft IntelliPoint
    iPod Touch/iPhone Driver

    非対応アプリ動作編
    Flash Player 10.3
    Java 6 JRE
    Java 7.0 JRE
    ティルズウィーバー
    Natal Online
    コンチェルトゲートフォルテ
    シルクロードオンライン
    東方幻想麻雀
    IME2010 Installer
    Adobe Reader X for Win2000
    Baidu IME 2.x
    MMORPG ドルアーガーの塔
    Adobe Air for Windows 2000
    Baidu IME
    iTunes 10.x installer
    Evernote 4
    Janetter
    Second Life
    雀龍門
    Media Manager for PSP 2.5a
    .NET Framework 3.5SP1
    ATOK 月額版(2010/2011)
    Leaf 愛佳でいくの!!
    VistaのScreenSaver
    会計ソフト弥生シリーズ 10
    Vegas Movie Studio 9
    EyeBall Chat
    ・CanonPowerShot[Soft/DPP]
    Google SketchUp Pro 7
    dance mixer
    Lismo Port
    DivX
    SONY ScreenSaver
    mixi アプリ
    DivX v7.x
    ニコニコムービーメーカー(動画)
    RC-S330 PaSoRi
    Finale 2009
    ZoneAlarm 8.0
    ルナティア Online
    ストリートギアーズ
    xfy Blog Editor
    Photoshop Elements 7
    Premiere Elements 7
    PowerShell 1.0
    ai sp@ce
    電脳フィギュアARis
    VOCALOID2 ミク・リンレン
    Google Chrome/SRW Iron
    Media Player 10
    ・iTunes 7.6.2を使う方法
    QuickTime 7.5x/7.6x
    foobar2000 9.5.x/9.6.x
    RealPlayer11
    Safari3/4.0
    ShockwavePlayer10/11
    Windows Live Writer
    Live Messenger
    Veoh Web Player / Web TV
    Level-R

    追加機能・カスタマイズ編
    W2K Kernel32 改造計画【BM】
    W2K Update Rollup v2
    XNA/SlimDX
    CPU Core数リミット解除
    OutLook Express 6SP3
    MDAC 2.8 SP2
    GIF/PNGを使えるMSPAINT
    IE5でWindowsUpdate
    MSXML 4.0SP3
    DirectX9.0c(2010/Feb)+拡張
    MS09-062(Gdiplus.dll)更新
    Unicode 制御文字
    Internet Explorer6 Bonus Pack
    夏時間(DaylightSavingTime)
    レジストリバックアップを取る
    IME2007
    Windows Media Bonus Pack
    XPSファイルビューア
    Windows Defender
    文字化け対策(FontLink)
    Meirio(KB927489)
    msconfig
    圧縮フォルダ
    Windows Movie Maker
    IE5.01/5.5/6タブ化
    MediaTypeChanger(EISA構成)
    Win2000 SP4 Support Tool
    kill/tlist with Debugging Tools
    sc.exe with Resource kit
    reg.exe
    TaskTray 256色化
    ISO仮想CD/DVDドライバ
    IE6高速化とWSH 5.7/5.8
    MS Baseline Security Analyzer
    音声認識 API 5.1
    Text Service

    Win2000インストール編
    CF-J10S
    N10Jc
    ThinkPad X200(7454)
    Quad Core/X48/P5E3
    VAIO VGN Type S
    E6850搭載 サポートPC
    Let'snote CF-R6
    MacMini
    Dell LATITUDE D630
    Core i7 + X58 +ICH10R
    790FX + SB750
    Clevo W860CU
    最新コメント
    Categories
    アーカイブ
    Information
    Google広告




    Translate


    このサイトはIE5.x/IE6
    IE5.x Internet Explorer 6.x

    Firefox Firefox ブラウザ無料ダウンロード
    で最適化されています。
    Technorati
    Add to iGoogle
    Amazon GIFTでカンパ

    Donation