自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

看我如何從瀏覽器中獲取信用卡密碼

系統(tǒng) 瀏覽器 黑客攻防
在如今信用卡時(shí)代,信用卡盜刷案例層出不窮,作案方式也是五花八門。如中間人(MITM),惡意軟件和rootkit攻擊。一旦攻擊者獲得數(shù)據(jù)訪問權(quán)限,他們會(huì)將竊取到的信用卡信息轉(zhuǎn)移到他們的服務(wù)器,然后將其用于匿名支付或出售以賺取利潤。

 [[225922]]

一.寫在前面的話

在如今信用卡時(shí)代,信用卡盜刷案例層出不窮,作案方式也是五花八門。如中間人(MITM),惡意軟件和rootkit攻擊。一旦攻擊者獲得數(shù)據(jù)訪問權(quán)限,他們會(huì)將竊取到的信用卡信息轉(zhuǎn)移到他們的服務(wù)器,然后將其用于匿名支付或出售以賺取利潤。

最近我們研究了幾款最受歡迎的四種瀏覽器—Internet Explorer(IE),Microsoft Edge,Google Chrome和Mozilla Firefox是如何存儲(chǔ)信用卡數(shù)據(jù)以及其他的安全風(fēng)險(xiǎn)。

二.記住密碼

如今許多瀏覽器為了方便用戶使用提供了記住密碼等功能。但同時(shí)也暴露了一些安全問題。就以“記住密碼”功能為例。首先我們了解下它的工作原理:瀏覽器存儲(chǔ)HTML表單數(shù)據(jù),并在請求信息時(shí)自動(dòng)填寫表單。這樣可以避免用戶重新輸入信息,節(jié)省填寫表單的時(shí)間。在研究中我們發(fā)現(xiàn)IE,Edge,Chrome和Firefox都存在記住密碼的功能。不幸的是,他們存儲(chǔ)敏感信息的方式都存在安全隱患。

在圖1中,您可以看到記住密碼功能的一個(gè)示例。

圖1

三.如何儲(chǔ)存自動(dòng)填寫的數(shù)據(jù)

自動(dòng)填寫數(shù)據(jù)基于操作系統(tǒng)(OS)的不同存儲(chǔ)在不同位置。我們看看常見的幾種瀏覽器是怎么儲(chǔ)存數(shù)據(jù)的。

IE和Edge將數(shù)據(jù)存儲(chǔ)至以下注冊表項(xiàng)

  1. HKEY_CURRENT_USER Software Microsoft Internet Explorer IntelliForms FormData 
  2. HKEY_CURRENT_USER Software Classes LocalSettings Software Microsoft Windows CurrentVersion 
  3. AppContainer Storage microsoft.microsoftedge_8wekyb3d8bbwe MicrosoftEdge IntelliForms FormData 
  4. HKEY_CURRENT_USER Software Microsoft Internet Explorer IntelliForms Storage1 
  5. HKEY_CURRENT_USER Software Microsoft Internet Explorer IntelliForms Storage2 

Chrome將數(shù)據(jù)存儲(chǔ)在SQLite數(shù)據(jù)庫文件中

  1. %LocalAppData% Google Chrome User Data Default Web Data 

Firefox將數(shù)據(jù)存儲(chǔ)在SQLite數(shù)據(jù)庫文件中

  1. %AppData% Mozilla Firefox Profiles {uniqString}。默認(rèn) formhistory.sqlite 

需要注意的是IE,Edge,Chrome和Firefox都利用Windows DPAPI(數(shù)據(jù)保護(hù)接口)來加密自動(dòng)填寫數(shù)據(jù),并在下次使用之前將其解密。

四.DPAPI

DPAPI(數(shù)據(jù)保護(hù)接口)是一對調(diào)用函數(shù),為用戶和系統(tǒng)進(jìn)程提供操作系統(tǒng)級別的數(shù)據(jù)保護(hù)服務(wù)??墒俏覀冎罃?shù)據(jù)保護(hù)是操作系統(tǒng)的一部分,所以每個(gè)應(yīng)用程序都可以保護(hù)數(shù)據(jù),而不需要任何特定的加密代碼,也就是說不需要DPAPI進(jìn)行的函數(shù)調(diào)用。

那么問題來了:瀏覽器使用DPAPI函數(shù),同時(shí)加密所需的數(shù)據(jù),而且不需要用戶干預(yù)。任何腳本或代碼都可以在不需要特殊許可或提升權(quán)限的情況下就可以調(diào)用解密DPAPI函數(shù)來解密數(shù)據(jù),比如信用卡信息。

五.加密數(shù)據(jù)提取

為了從IE,Edge,Chrome和Firefox中提取信用卡數(shù)據(jù),我們需要了解兩件事情:

1.SQLite數(shù)據(jù)庫結(jié)構(gòu)

2.如何使用DPAPI解密信用卡信息

SQLite是如今很受歡迎的嵌入式數(shù)據(jù)庫軟件。它廣泛部署數(shù)據(jù)庫引擎,也用于瀏覽器,操作系統(tǒng),嵌入式系統(tǒng)(例如,移動(dòng)電話)和其它軟件。

DPAPI CryptUnprotectData函數(shù)

圖2

重要參數(shù):

pDataIn [輸入]

指向保存加密數(shù)據(jù)的DATA_BLOB結(jié)構(gòu)的指針。

ppszDataDescr [輸出,可選]

指向加密數(shù)據(jù)字符串可讀的指針。

pOptionalEntropy [輸入,可選]

指向數(shù)據(jù)加密時(shí)使用的密碼或其他附加熵的DATA_BLOB結(jié)構(gòu)的指針 。

pPromptStruct [輸入,可選]

指向CRYPTPROTECT_PROMPTSTRUCT結(jié)構(gòu)的指針,該結(jié)構(gòu)提供有關(guān)顯示提示的位置和時(shí)間以及這些提示的內(nèi)容應(yīng)該是什么內(nèi)容的信息。該參數(shù)可以設(shè)置為NULL。

pDataOut [輸出]

指向接收解密數(shù)據(jù)的DATA_BLOB結(jié)構(gòu)的指針。

六.Chrome案例研究

1.Chrome SQLite存儲(chǔ)文件

圖3通過使用“DB Browser for SQLite”工具顯示Chrome的自動(dòng)填寫數(shù)據(jù)(在Web數(shù)據(jù)SQLite文件下)。

請注意,Chrome會(huì)將信用卡詳細(xì)信息保存在一個(gè)名為“credit_cards”的單獨(dú)表格中

圖3

正如你所看到的,所有的細(xì)節(jié)都是明文的,除了card_number字段,它為一個(gè)加密的BlobData字段。

在圖4中,您可以看到其他保存的表格,其中的數(shù)據(jù)也未加密。

圖4

2.Chrome DPAPI調(diào)用

Chrome瀏覽器允許用戶通過設(shè)置來查看存儲(chǔ)的信用卡信息,你在地址欄輸入chrome:// settings / AutoFill就可以看見了。

圖5

正如你看到的,我們有一張編號“4916 4182 7187 7549”的信用卡。當(dāng)要求查看信用卡信息時(shí),或者瀏覽器嘗試自動(dòng)填寫表單字段時(shí),會(huì)調(diào)用用于解密數(shù)據(jù)的DPAPI功能。

在圖6中,您可以看到Chrome API對DPAPI函數(shù)-CryptUnProtectData()的調(diào)用。參數(shù)pDataOut-> pbdata指向返回的解密數(shù)據(jù)(參見函數(shù)聲明和pDataOut參數(shù))。

*您可以在pDataOut-> pbdata的地址空間中看到卡號“4916 4182 7187 7549” 。

圖6

圖6- API監(jiān)視器,Chrome瀏覽器調(diào)用DPAPI CryptUnprotectData()函數(shù)

無獨(dú)有偶,IE和Edge瀏覽器在自動(dòng)填寫用戶表單字段時(shí)使用相同的過程。

唯一的區(qū)別是IE和Edge將他們的自動(dòng)填寫數(shù)據(jù)作為加密的BlobData存儲(chǔ)在注冊表中。

至于Firefox,您也可以使用“DB Browser for SQLite”工具查看未加密的數(shù)據(jù)。

七.深入探索代碼

在了解這些情況之后,我們可以從以下兩點(diǎn)來編寫我們POC:

1.將處理SQLite數(shù)據(jù)庫(適用于Chrome和Firefox)和DPAPI的軟件包導(dǎo)入到我們的項(xiàng)目中。

2.使用DPAPI函數(shù)來解密瀏覽器的自動(dòng)填寫的BlobData。

Chrome代碼(C#)

第1行 – 定義Chrome自動(dòng)填寫數(shù)據(jù)庫文件的路徑(應(yīng)該關(guān)閉Chrome才能訪問該文件)。

第2行 – 定義存儲(chǔ)信用卡詳細(xì)信息的表的名稱。

  1. string SQLiteFilePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+ "\Google\Chrome\User Data\Default\Web Data"
  2. string tableName = "credit_cards"
  3. . . . 

第1-5行定義到db的連接,以及查詢所需的表(credit_cards)。

第7-8行將所需數(shù)據(jù)返回到DB DataTable對象(此對象表示一個(gè)內(nèi)存數(shù)據(jù)表)。

  1. string ConnectionString = "data source=" + SQLiteFilePath + ";New=True;UseUTF16Encoding=True"
  2. string sql = string.Format("SELECT * FROM {0} ", tableName); 
  3. SQLiteConnection connect = new SQLiteConnection(ConnectionString) 
  4. SQLiteCommand command = new SQLiteCommand(sql, connect); 
  5. SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); 
  6. DataTable DB = new DataTable(); 
  7. adapter.Fill(DB); 
  8. ................ 

第1行從DB對象中提取加密的BlobData字段(信用卡號)。

第2行發(fā)送加密的BlobData進(jìn)行解密。

  1. byte[] byteArray = (byte[])DB.Rows[i][4]; 
  2. byte[] decrypted = DPAPI.Decrypt(byteArray, entropy, out description); 
  3. . . . 

IE & Edge code (C++)- –

第1行定義了一個(gè)DATA_BLOB對象,該對象將保存加密數(shù)據(jù)(自動(dòng)填寫注冊表值)。

第2行定義了一個(gè)DATA_BLOB對象,該對象將保存解密的數(shù)據(jù)(自動(dòng)填寫注冊表值)。

第4-8行定義了注冊碼。(這些注冊表鍵都保存著reg值,它們保存著自動(dòng)填寫B(tài)lob數(shù)據(jù))。

  1. DATA_BLOB DataIn; 
  2. DATA_BLOB DataVerify; 
  3. std::vector<LPCWSTR> RegKeys; 
  4. RegKeys.push_back(L"Software\Microsoft\Internet Explorer\IntelliForms\FormData"); 
  5. RegKeys.push_back(L"Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\IntelliForms\FormData"); 
  6. RegKeys.push_back(L"Software\Microsoft\Internet Explorer\IntelliForms\Storage1"); 
  7. RegKeys.push_back(L"Software\Microsoft\Internet Explorer\IntelliForms\Storage2"); 
  8. . . . 

剩下要做的就是運(yùn)行每個(gè)注冊表項(xiàng),并為每個(gè)注冊表項(xiàng)提取其注冊表值(自動(dòng)填寫B(tài)lobData)。

  1. for (int i = 0; i < 4; i++) 
  2. RegOpenKeyEx(HKEY_CURRENT_USER, RegKeys[i], 0, KEY_QUERY_VALUE, &hKey) 
  3. for (int j = 0; j < keyValues.size(); j++) 
  4. RegQueryValueEx(hKey, keyValues[j].c_str(), 0, 0, (LPBYTE)dwReturn, &dwBufSize); 
  5. . . . 

為了將數(shù)據(jù)發(fā)送到解密函數(shù)(decryptContentDPAPI是CryptUnProtectData()函數(shù)的包裝函數(shù)),我們需要將返回的自動(dòng)填寫B(tài)lobData(通過RegQueryValueEx調(diào)用獲?。┺D(zhuǎn)換為DATA_BLOB對象。解密后的數(shù)據(jù)將被返回到DataVerify對象中。

  1. DataIn.cbData = dwBufSize; 
  2. DataIn.pbData = dwReturn; 
  3. decryptContentDPAPI(&DataIn,&DataVerify); 
  4. . . . 

八.寫在最后的話

綜上所述,問題的根源在于使用了DPAPI,正因?yàn)檫@樣惡意軟件和木馬就可以在不需要用戶干預(yù)的情況下自動(dòng)解密數(shù)據(jù)。提取到用戶數(shù)據(jù),例如信用卡和密碼數(shù)據(jù)。

一些建議:

第一,禁用瀏覽器的自動(dòng)填寫選項(xiàng)。

第二,盡量不要在瀏覽器中填寫關(guān)于信用卡的數(shù)據(jù),更不要在不安全的網(wǎng)絡(luò)環(huán)境進(jìn)行交易。

參考文獻(xiàn)

  • https://msdn.microsoft.com/en-us/library/ms995355.aspx
  • https://www.sqlite.org/
  • https://www.kraftkennedy.com/roaming-internet-explorer-chrome-user-saved-passwords-ue-v/
  • https://msdn.microsoft.com/en-us/library/windows/desktop/aa380882(v=vs.85).aspx
  • https://msdn.microsoft.com/en-us/library/windows/desktop/aa380261(v=vs.85).aspx
責(zé)任編輯:武曉燕 來源: www.cyberark.com
相關(guān)推薦

2019-11-07 14:20:45

Windows 10瀏覽器信用卡

2020-09-01 11:00:14

UltraRank惡意代碼網(wǎng)絡(luò)攻擊

2019-07-24 10:36:31

Chrome瀏覽器信用卡掃描器

2023-12-29 11:38:20

2022-08-10 18:20:25

信用卡竊取新加坡網(wǎng)絡(luò)釣魚

2021-02-22 10:04:10

黑客Google AppsCSP

2020-03-27 22:29:16

信息安全網(wǎng)絡(luò)攻擊東京奧運(yùn)會(huì)

2017-04-27 11:09:52

信用卡支付技術(shù)

2024-12-06 14:58:22

2021-08-04 15:11:54

網(wǎng)絡(luò)安全數(shù)據(jù)技術(shù)

2016-03-10 09:56:41

2021-12-07 14:21:18

惡意程序惡意軟件網(wǎng)絡(luò)攻擊

2018-07-05 14:20:48

信用卡

2016-10-11 06:36:10

信用卡金融支付安全

2012-03-16 10:08:39

Geode指紋掃描器信用卡

2014-03-24 09:41:45

攜程信息泄露信用卡

2009-03-20 23:50:54

2017-04-11 12:45:29

Python機(jī)器學(xué)習(xí)信用卡欺詐檢測

2013-07-25 14:17:17

2017-04-06 09:20:10

機(jī)器學(xué)習(xí)模型信用卡詐騙
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號