狠狠撸

狠狠撸Share a Scribd company logo
8
Most read
9
Most read
12
Most read
64ビット対応顿濒濒インジェクション
64ビット対応顿濒濒インジェクション
顿尝尝滨苍箩别肠迟颈辞苍の利用例
动作イメージ



            パワー
            ポイント
  メモ帳

      Windows
    メモ帳

      メモ帳
                   ブラウザ
动作イメージ
各プロセスのメモリ空間内には、当該プロセ
スの独自コード?カーネル?DLLがロード
   プロセスA           プロセスB

   カーネルコード         カーネルコード


   プロセスAのコード       プロセスBのコード



     Other.dll        test.dll

    user32.dll      user32.dll

    kernel32.dll    kernel32.dll
2种类の顿尝尝配置
ダイナミックにロードする

//test.dllをロードする
HMODULE hDll = ::LoadLibrary( "test.dll" );
if ( hDll != NULL ){

      //DLLを使用するコードをここに記述

       //test.dllをアンロードする
     ::FreeLibrary( hDll );
}
AのコードでBのメモリ空間に
ロードすればインジェクション成立
   プロセスA          プロセスB


   プロセスAのコード
  LoadLibrary()   プロセスBのコード




                    test.dll
他プロセスでスレッド実行


HANDLE CreateRemoteThread(
 HANDLE hProcess, // 挿入先プロセスハンドル
 LPSECURITY_ATTRIBUTES lpAttr,// セキュリティ属性
 DWORD dwStackSize, // スタックサイズ
 LPTHREAD_START_ROUTINE lpAddr,//関数ポインタ
 LPVOID lpParameter, // 引数ポインタ
 DWORD dwCreationFlags, // 作成フラグ
 LPDWORD lpThreadId // スレッド識別子
 );
LPTHREAD_START_ROUTINE 型

typedef DWORD (
  __stdcall *LPTHREAD_START_ROUTINE)
   ( [in] LPVOID lpThreadParameter );



HMODULE LoadLibrary(
   LPCTSTR lpFileName //モジュール名
);
BOOL FreeLibrary(
   HMODULE hModule // DLLハンドル
);
関数のアドレス

    プロセスA                     プロセスB

     カーネルコード                   カーネルコード


   プロセスAのコード                 プロセスBのコード




 0x75230000 kernel32.dll   0x75230000 kernel32.dll
       0x75230xxx                0x75230xxx
      Loadribrary()             Loadribrary()
インジェクション?コード
//kernel32のモジュールハンドル取得
IntPtr m = GetModuleHandle("kernel32.dll");
//LoadLibrary()のアドレス取得
UIntPtr a = GetProcAddress(m, "LoadLibraryA");
//スレッド実行
IntPtr t = CreateRemoteThread(
   hProcess,IntPtr.Zero, 0, a, param, 0, out b);
//スレッド完了待ち(DllMainから返るのを待つ)
WaitForSingleObject(t,INFINITE);
//DLLハンドルの取得
if (GetExitCodeThread(t, out hDll)) {
      if(hDll!=IntPtr.Zero)result = true;//成功
}
//スレッドクローズ
CloseHandle(t);
LoadLibraryのパラメータ
HMODULE hDll = ::LoadLibrary( "test.dll" );


自プロセスのメモリ空間に展開された文字列へのポインタ
プロセスBのスレッドにはプロセスB上のアドレスが必要



             プロセスA            プロセスB


             0x02583000       0x02583000
              “test.dll”       Int x=100
他プロセスでメモリ操作
VirtualAllocEx()   挿入先プロセスでメモリ確保
WriteProcessMemory()     挿入先のメモリ空間に書き込む

書き込んだメモリを使用する Loadribrary()のパラメータ
VirtualFreeEx() 確保したメモリの開放



               プロセスA           プロセスB
             VirtualAllocEx
        WriteProcessMemory
                              0x000034000
                               “test.dll”
メモリ操作?コード
UInt32 MEM_COMMIT = 0x1000;
UInt32 PAGE_EXECUTE_READWRITE = 0x40;
IntPtr m = (IntPtr)VirtualAllocEx(
       hProcess, IntPtr.Zero, (uint)len,
       MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (m != IntPtr.Zero) {
    //確保した挿入先の領域にDLL名を書き込む
    WriteProcessMemory(
      hProcess, m, dllName, (UIntPtr)len, out b);

  //確保したメモリをここで使用する
  //(挿入先でLoadLibraryを呼び出す)

  //確保したメモリの開放
  VirtualFreeEx(hProcess, m, 0, 0x8000);
64bitOSの問題(混在)
64ビットOSでは、従来の32ビットプログラムもWOW64に
よりそのまま使用することができるため、両者が混在している

64ビットEXEは、64ビットDLLのみ使用可能
32ビットEXEは、32ビットDLLのみ使用可能




 Dllインジェクションも、挿入先に合わせたDLLが必要
64bitOSの問題
(ERROR_ACCESS_DENIED)


WOW64上からは、CreateRemoteThread()は、
ERROR_ACCESS_DENIEDが発生して使用できません。

使用できないという正規のドキュメントは、見つけられませんでしたが、
同一趣旨のコメントが多数検索にヒットします。




 64bit上では、64bitのEXEしか使用できない
64bitOSの問題
(kernel32.dllのアドレスが違う)
WOW64上の32bitプロセスは、違うkernel32.dllを
ロードしている。
 c:?>listdlls POWERPNT.EXE                          32ビットプロセス
 ListDLLs v3.1 - List loaded DLLs

 Base               Size      Path
 0x00000000776b0000 0x160000 C:?Windows?SysWOW64?ntdll.dll
 0x0000000075230000 0x110000 C:?Windows?syswow64?kernel32.dll

 >ListDlls notepad                                 64ビットプロセス
 ListDLLs v3.1 - List loaded DLLs

 Base               Size      Path
 0x0000000077650000 0x186000 C:?Windows?system32?ntdll.dll
 0x00000000771c0000 0x12d000 C:?Windows?system32?kernel32.dll


 64ビット上から32ビットプロセスのアドレスが分からない
64bitOSの問題(まとめ)
マトリックスにしてみると、下記の3種類しか動作できないこ
とが分かる




挿入先に応じたDLLが必要
WOW64で動作させない
64bitのEXE上で32bitのkernel32ロードのアドレスが必要
挿入先に応じたDLLが必要
64bitOS上では、64bitの「notepad.exe」が動作している




OSにより違う場合は、2種類用意して実行時に選択する
WOW64で動作させない
OSに合わせたEXEを用意する




.NETの「AnyCPU」で作成すれば解決

//ポインタが8バイトの場合
If(IntPtr.Size == 8){
       //64bit環境で動作中
}
64bitから32bitの
 kernel32.dllのアドレス取得
   32bitでコンパイルした下記のEXEを実行して
   アドレスを取得する

  #include <windows.h>
  int main(int, char**){
     return(int) =
       GetProcAddress(
            GetModuleHandle(“kernel32”), “LoadLibraryA”);
  }


参考「64bitプロセスから32bitプロセスにDLL Injection (C言語) 」
http://nazochu.blogspot.com/2011/09/64bit32bitdll-injection.html
4G超のアドレスに注意が必要
kernel32.dllのアドレスは幸い32bitで表現可能だった
>ListDlls notepad                                 64ビットプロセス
ListDLLs v3.1 - List loaded DLLs

Base               Size     Path
0x0000000077650000 0x186000 C:?Windows?system32?ntdll.dll
0x00000000771c0000 0x12d000 C:?Windows?system32?kernel32.dll


Dllハンドルは32bitで表現できない
64ビット対応顿濒濒インジェクション
Ad

Recommended

PDF
LEANSTARTUPの現場 #leanstartup
Itsuki Kuroda
?
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
?
PPTX
鲍滨设计の土台になる考え方-インテリジェントネット社内勉强会
滨狈滨株式会社
?
PPTX
搁辞辞迟濒别蝉蝉コンテナ
Akihiro Suda
?
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
?
PDF
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
?
PDF
Halide による画像処理プログラミング入門
Fixstars Corporation
?
PDF
颁罢贵とは
Hiromu Yakura
?
PDF
ioMemoryとAtomic Writeによるデータベース高速化
IIJ
?
PDF
TDD のこころ @ OSH2014
Takuto Wada
?
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
?
PDF
惭测厂蚕尝と笔辞蝉迟驳谤别厂蚕尝の基本的なバックアップ比较
Shinya Sugiyama
?
PDF
未経験者から世界と渡り合うネットワークエンシ?ニアになるためのキャリア设计术
Taiji Tsuchiya
?
PDF
颁/颁++プログラマのための开発ツール
MITSUNARI Shigeo
?
PDF
深層学習向け計算機クラスター MN-3
Preferred Networks
?
PPTX
Raspberry Piで始める自宅サーバー超入門
VirtualTech Japan Inc./Begi.net Inc.
?
PDF
Constexpr 中3女子テクニック
Genya Murakami
?
PDF
そのスプリントレビューは、機能してますか? #agile_hiyoko
Miho Nagase
?
PDF
古典プログラマ向け量子プログラミング入門 [フル版]
OsSAL
?
PDF
蚕耻颈苍别?难解プログラミングについて
mametter
?
PDF
Ruby で高速なプログラムを書く
mametter
?
PDF
鲍贰贵滨ベアメタルプログラミング
Yuma Ohgami
?
PPTX
OpenSim の 使い方 (scaling編)
Yuichi Kurita
?
PDF
雑な惭测厂蚕尝パフォーマンスチューニング
yoku0825
?
PDF
协働ロボット颁翱搁翱の开発における形式的仕様记述碍惭尝の开発と适用
Life Robotics
?
PDF
TDD のこころ
Takuto Wada
?
PDF
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
Etsuji Nakai
?
PDF
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
?
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
?
PPTX
Dll Injection
Hiroaki Hata
?

More Related Content

What's hot (20)

PDF
ioMemoryとAtomic Writeによるデータベース高速化
IIJ
?
PDF
TDD のこころ @ OSH2014
Takuto Wada
?
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
?
PDF
惭测厂蚕尝と笔辞蝉迟驳谤别厂蚕尝の基本的なバックアップ比较
Shinya Sugiyama
?
PDF
未経験者から世界と渡り合うネットワークエンシ?ニアになるためのキャリア设计术
Taiji Tsuchiya
?
PDF
颁/颁++プログラマのための开発ツール
MITSUNARI Shigeo
?
PDF
深層学習向け計算機クラスター MN-3
Preferred Networks
?
PPTX
Raspberry Piで始める自宅サーバー超入門
VirtualTech Japan Inc./Begi.net Inc.
?
PDF
Constexpr 中3女子テクニック
Genya Murakami
?
PDF
そのスプリントレビューは、機能してますか? #agile_hiyoko
Miho Nagase
?
PDF
古典プログラマ向け量子プログラミング入門 [フル版]
OsSAL
?
PDF
蚕耻颈苍别?难解プログラミングについて
mametter
?
PDF
Ruby で高速なプログラムを書く
mametter
?
PDF
鲍贰贵滨ベアメタルプログラミング
Yuma Ohgami
?
PPTX
OpenSim の 使い方 (scaling編)
Yuichi Kurita
?
PDF
雑な惭测厂蚕尝パフォーマンスチューニング
yoku0825
?
PDF
协働ロボット颁翱搁翱の开発における形式的仕様记述碍惭尝の开発と适用
Life Robotics
?
PDF
TDD のこころ
Takuto Wada
?
PDF
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
Etsuji Nakai
?
PDF
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
?
ioMemoryとAtomic Writeによるデータベース高速化
IIJ
?
TDD のこころ @ OSH2014
Takuto Wada
?
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
?
惭测厂蚕尝と笔辞蝉迟驳谤别厂蚕尝の基本的なバックアップ比较
Shinya Sugiyama
?
未経験者から世界と渡り合うネットワークエンシ?ニアになるためのキャリア设计术
Taiji Tsuchiya
?
颁/颁++プログラマのための开発ツール
MITSUNARI Shigeo
?
深層学習向け計算機クラスター MN-3
Preferred Networks
?
Raspberry Piで始める自宅サーバー超入門
VirtualTech Japan Inc./Begi.net Inc.
?
Constexpr 中3女子テクニック
Genya Murakami
?
そのスプリントレビューは、機能してますか? #agile_hiyoko
Miho Nagase
?
古典プログラマ向け量子プログラミング入門 [フル版]
OsSAL
?
蚕耻颈苍别?难解プログラミングについて
mametter
?
Ruby で高速なプログラムを書く
mametter
?
鲍贰贵滨ベアメタルプログラミング
Yuma Ohgami
?
OpenSim の 使い方 (scaling編)
Yuichi Kurita
?
雑な惭测厂蚕尝パフォーマンスチューニング
yoku0825
?
协働ロボット颁翱搁翱の开発における形式的仕様记述碍惭尝の开発と适用
Life Robotics
?
TDD のこころ
Takuto Wada
?
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
Etsuji Nakai
?
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
?

Similar to 64ビット対応顿濒濒インジェクション (20)

PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
?
PPTX
Dll Injection
Hiroaki Hata
?
PPTX
as-5. サブルーチン呼び出しのメカニズム
kunihikokaneko1
?
PDF
あなたの知らない苍辞辫たち蔼ラボユース合宿
MITSUNARI Shigeo
?
PDF
怪しい奥颈苍诲辞飞蝉プログラミング
nagoya313
?
PDF
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
?
PDF
超基础からのコンピュータ
Yoshihiro Yamaguchi
?
PDF
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
hiyohiyo
?
PDF
V6read#3
magoroku Yamamoto
?
PDF
Exploring the x64
FFRI, Inc.
?
PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
?
PDF
Loading dl lfrommemory
ry0kvn
?
PDF
PFI Seminar 2010/02/18
Preferred Networks
?
PDF
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
PDF
【学习メモ#3谤诲】12ステップで作る组込み翱厂自作入门
sandai
?
PDF
濒濒惫尘入门
MITSUNARI Shigeo
?
PDF
PWNの超入門 大和セキュリティ神戸 2018-03-25
Isaac Mathis
?
PPTX
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
?
PDF
From IA-32 to avx-512
MITSUNARI Shigeo
?
PPTX
ネイティブコードを语る
Kenji Imasaki
?
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
?
Dll Injection
Hiroaki Hata
?
as-5. サブルーチン呼び出しのメカニズム
kunihikokaneko1
?
あなたの知らない苍辞辫たち蔼ラボユース合宿
MITSUNARI Shigeo
?
怪しい奥颈苍诲辞飞蝉プログラミング
nagoya313
?
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
?
超基础からのコンピュータ
Yoshihiro Yamaguchi
?
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
hiyohiyo
?
Exploring the x64
FFRI, Inc.
?
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
?
Loading dl lfrommemory
ry0kvn
?
PFI Seminar 2010/02/18
Preferred Networks
?
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
【学习メモ#3谤诲】12ステップで作る组込み翱厂自作入门
sandai
?
濒濒惫尘入门
MITSUNARI Shigeo
?
PWNの超入門 大和セキュリティ神戸 2018-03-25
Isaac Mathis
?
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
?
From IA-32 to avx-512
MITSUNARI Shigeo
?
ネイティブコードを语る
Kenji Imasaki
?
Ad

More from Shinichi Hirauchi (20)

PPTX
最近、ショッピングセンターとかの驻车场で见かける「自动でナンバープレートを认识して决算するやつ」←これ、作ってみました
Shinichi Hirauchi
?
PPTX
Developer IO 2024 Odyssey SAMを応用したコンピュータビジョンの話
Shinichi Hirauchi
?
PPTX
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
?
PPTX
Amazon Forecast 機械学習でビジネスの予測と成果を簡単かつ正確に予測する
Shinichi Hirauchi
?
PPTX
Amazon connect について ?各種AWSのサービスとの連携?
Shinichi Hirauchi
?
PPTX
Alexa SDK Alexa Salon
Shinichi Hirauchi
?
PDF
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Shinichi Hirauchi
?
PPTX
Developers.io.札幌 xamarinってと?うよ
Shinichi Hirauchi
?
PPTX
20分でできる!齿补尘补谤颈苍.贵辞谤尘蝉入门
Shinichi Hirauchi
?
PPTX
ソフト屋が挑戦した電子工作 ?力ずくの10か月?
Shinichi Hirauchi
?
PPTX
Developers.IO 2016 F-1 セッション資料
Shinichi Hirauchi
?
PDF
シルハ?ーウィークに蹿补肠别产辞辞办アフ?リを作成した
Shinichi Hirauchi
?
PDF
齿补尘补谤颈苍.蹿辞谤尘蝉で作成する翻訳机能付き迟飞颈迟迟别谤クライアント
Shinichi Hirauchi
?
PPTX
简易电话交换机の作成~廃品利用による低予算プロジェクト~
Shinichi Hirauchi
?
PDF
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
Shinichi Hirauchi
?
PDF
叠辞虫痴颈别飞の美味しい食べ方
Shinichi Hirauchi
?
PDF
C#で作成するfacebookアプリ mvp community camp
Shinichi Hirauchi
?
PDF
贵补肠别产辞辞办スパムデータベース词あなたのお友达に、スパムアカウントが纷れ込んでませんか
Shinichi Hirauchi
?
PDF
简易电话交换机の作成词廃品利用による低予算プロジェクト
Shinichi Hirauchi
?
PDF
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Shinichi Hirauchi
?
最近、ショッピングセンターとかの驻车场で见かける「自动でナンバープレートを认识して决算するやつ」←これ、作ってみました
Shinichi Hirauchi
?
Developer IO 2024 Odyssey SAMを応用したコンピュータビジョンの話
Shinichi Hirauchi
?
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
?
Amazon Forecast 機械学習でビジネスの予測と成果を簡単かつ正確に予測する
Shinichi Hirauchi
?
Amazon connect について ?各種AWSのサービスとの連携?
Shinichi Hirauchi
?
Alexa SDK Alexa Salon
Shinichi Hirauchi
?
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Shinichi Hirauchi
?
Developers.io.札幌 xamarinってと?うよ
Shinichi Hirauchi
?
20分でできる!齿补尘补谤颈苍.贵辞谤尘蝉入门
Shinichi Hirauchi
?
ソフト屋が挑戦した電子工作 ?力ずくの10か月?
Shinichi Hirauchi
?
Developers.IO 2016 F-1 セッション資料
Shinichi Hirauchi
?
シルハ?ーウィークに蹿补肠别产辞辞办アフ?リを作成した
Shinichi Hirauchi
?
齿补尘补谤颈苍.蹿辞谤尘蝉で作成する翻訳机能付き迟飞颈迟迟别谤クライアント
Shinichi Hirauchi
?
简易电话交换机の作成~廃品利用による低予算プロジェクト~
Shinichi Hirauchi
?
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
Shinichi Hirauchi
?
叠辞虫痴颈别飞の美味しい食べ方
Shinichi Hirauchi
?
C#で作成するfacebookアプリ mvp community camp
Shinichi Hirauchi
?
贵补肠别产辞辞办スパムデータベース词あなたのお友达に、スパムアカウントが纷れ込んでませんか
Shinichi Hirauchi
?
简易电话交换机の作成词廃品利用による低予算プロジェクト
Shinichi Hirauchi
?
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Shinichi Hirauchi
?
Ad

64ビット対応顿濒濒インジェクション