「Internet Explorer7 の認証パスワードとオートコンプリートの操作」(4) オートコンプリートによるパスワード (2) | ScanNetSecurity[国内最大級のサイバーセキュリティ専門ポータルサイト]
2017.11.22(水)

「Internet Explorer7 の認証パスワードとオートコンプリートの操作」(4) オートコンプリートによるパスワード (2)

特集 特集

執筆:SapporoWorks
http://homepage2.nifty.com/spw/

Internet Explorer(以下IE)では、認証パスワードを「保存する」に設定していた場合や、オートコンプリートを有効にしている場合、それぞれのデータがコンピュータに保存されます。これらのデータの操作方法については、正式に公開されている訳では有りませんでしたが、IE 4.01 より前のものは、WnetEnumCachedPasswords(※1)、以降のものは、IPStoreインターフェース(※2)を使用したProtected Storageサービスで操作が可能なことが知られておりました。

Internet Explorerの認証パスワードとオートコンプリートの操作
http://codezine.jp/a/article.aspx?aid=147

今回、IEが7にバージョンアップされたことにより、この保存形式が全面的に変更され従来の方法では読み出せなくなってしまいました。本稿では、IE7でこれらのデータを操作する方法を解説します。なお、本稿は、C++言語、MicrosoftのPlatform SDK、及びMSDNライブラリの知識がある方を対象とさせて頂いております。本稿で使用したサンプルコード・実行ファイルや、実際のプログラムへの実装は、下記で行っておりますので、併せて参照いただければ幸いです。

本稿のサポートページ
http://www.sapporoworks.ne.jp/ie7_pass/
サンプルコードは、Microsoft Visual Studio 2005 C++ で作成され、
WindowsXP(SP2)で動作を確認しております。

HideSeek Ver2.1.0以降でIE7に対応
http://homepage2.nifty.com/spw/software/hideseek/

※1 WnetEnumCachedPasswords
:WnetEnumCachedPasswordsは、非公開APIであるためmpr.dllからGetProcAddressでアドレスを取得して使用できます。

※2 IPStoreインターフェース
http://msdn.microsoft.com/library/en-us/devnotes/winprog/ipstore.asp

────

>>オートコンプリートによるパスワード その2

対象となっているレジストリキー[Storage2]に、含まれる値をすべて列挙し、URL履歴の一覧から導出したハッシュ文字列と比較して、同一であった場合は、そのURLをパスワードとしてレジストリ値をデコードします。デコードはCryptUnprotectDataで行いますが、要領は、Web認証パスワードの時と同じです。

下記のコードは、その動作を実装したものです。

──────────────────────────────────
void main(int argc,char* argv[])
{
// 履歴からURLを取得する
wchar_t *UrlHistory[URL_HISTORY_MAX];
int UrlListoryMax = GetUrlHistory(UrlHistory);

char *KeyStr = {"Software\Microsoft\Internet Explorer\IntelliForms\Storage2"};
HKEY hKey;
// 対象レジストリの値を列挙する
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_CURRENT_USER,KeyStr,0,KEY_QUERY_VALUE,&hKey)){
for(int i=0;;i++){
char Val[1024];
DWORD Size = 1024;
if(ERROR_NO_MORE_ITEMS==RegEnumValue(hKey,i,Val, &Size, NULL,NULL, NULL,
NULL))
break;
// 取得したレジストリの値名と履歴URLのハッシュ値を比較する
for(int n=0;n char HashStr[1024];
// URLをパスワードとしてハッシュを計算する
GetHashStr(UrlHistory[n],HashStr);
if(strcmp(Val,HashStr)==0){// パスワード(URL)を発見
printf("ur : %ls",UrlHistory[n]);
printf("hash : %s",HashStr);
// 対象レジストリからデータを取得する
DWORD BufferLen;
DWORD dwType;
RegQueryValueEx(hKey,Val,0,&dwType,NULL,&BufferLen);
BYTE *Buffer = new BYTE[BufferLen];

if(RegQueryValueEx(hKey,Val,0,&dwType,Buffer,&BufferLen)==ERROR_SUCCESS){
DATA_BLOB DataIn;
DATA_BLOB DataOut;
DATA_BLOB OptionalEntropy;
DataIn.pbData = Buffer;
DataIn.cbData = BufferLen;
OptionalEntropy.pbData = (unsigned char *)UrlHistory[n];
OptionalEntropy.cbData = (wcslen(UrlHistory[n])+1)*2;
//プロテクト解除

if(CryptUnprotectData(&DataIn,0,&OptionalEntropy,NULL,NULL,1,&DataOut)){
PrintData((char *)DataOut.pbData);// デコードしたデータの表示
LocalFree(DataOut.pbData);
}
delete [] Buffer;
}
break;
}
}
}
RegCloseKey(hKey);
}
}
──────────────────────────────────

デコードされたデータの内部構造は、次のようになっています…

【執筆:SapporoWorks】

──
(この記事には続きがあります。続きはScan本誌をご覧ください)
http://www.ns-research.jp/cgi-bin/ct/p.cgi?m-sc_netsec
《ScanNetSecurity》

Scan PREMIUM 会員限定記事

もっと見る

Scan PREMIUM 会員限定記事特集をもっと見る

Scan BASIC 会員限定記事

もっと見る

Scan BASIC 会員限定記事特集をもっと見る

[Web小説] サイバー探偵 工藤伸治の事件簿サーガ (シーズン 1~6 第1話)

もっと見る

[Web小説] サイバー探偵 工藤伸治の事件簿サーガ (シーズン 1~6 第1話)特集をもっと見る

カテゴリ別新着記事

特集 カテゴリの人気記事 MONTHLY ランキング

  1. グローバルで活躍するプロフェッショナル - EYのサイバーセキュリティ部隊に仕事とキャリアを聞く

    グローバルで活躍するプロフェッショナル - EYのサイバーセキュリティ部隊に仕事とキャリアを聞く

  2. ここが変だよ日本のセキュリティ 第30回「ダメンズ・オーディット! 上場企業なら避けて通れない監査対応に監査感激!」

    ここが変だよ日本のセキュリティ 第30回「ダメンズ・オーディット! 上場企業なら避けて通れない監査対応に監査感激!」

  3. クラウドセキュリティ認証「ISO 27017」「ISO 27018」の違いとは? ~クラウドのよさを活かす認証コンサル LRM 社 幸松 哲也 社長に聞く

    クラウドセキュリティ認証「ISO 27017」「ISO 27018」の違いとは? ~クラウドのよさを活かす認証コンサル LRM 社 幸松 哲也 社長に聞く

  4. 工藤伸治のセキュリティ事件簿 シーズン 7 「アリバイの通信密室」 第8回 「はした金」

  5. [対談] 人工知能は重要経営課題となったサイバーリスクに対抗できるか

  6. 工藤伸治のセキュリティ事件簿 シーズン 7 「アリバイの通信密室」 第9回「勤怠簿」

  7. 工藤伸治のセキュリティ事件簿 シーズン 7 「アリバイの通信密室」 第7回 「三人の容疑者」

  8. マンガで実感 !! サイバーセキュリティ 第1話「静かなる目撃者」

  9. 工藤伸治のセキュリティ事件簿 シーズン6 「誤算」 第1回「プロローグ:七月十日 夕方 犯人」

  10. 工藤伸治のセキュリティ事件簿 シーズン 7 「アリバイの通信密室」 第1回 「プロローグ:身代金再び」

全カテゴリランキング

★★Scan PREMIUM 会員限定コンテンツにフルアクセスが可能となります★★
<b>★★Scan PREMIUM 会員限定コンテンツにフルアクセスが可能となります★★</b>

経営課題としてサイバーセキュリティに取り組む情報システム部門や、研究・開発・経営企画に携わる方へ向けた、創刊19年のセキュリティ情報サービス Scan PREMIUM を、貴社の事業リスク低減のためにご活用ください。

×