Skype-Type:一款通過(guò)聲音竊取鍵盤(pán)記錄的Keylogger工具
Skype-Type(簡(jiǎn)稱(chēng)S&T)是一款功能強(qiáng)大的鍵盤(pán)聲音竊聽(tīng)器,這款新穎的安全研究工具將允許他人執(zhí)行鍵盤(pán)聲音竊聽(tīng)攻擊。簡(jiǎn)而言之,S&T可以通過(guò)竊聽(tīng)目標(biāo)用戶(hù)的鍵盤(pán)聲音來(lái)竊取數(shù)據(jù)。
首先,S&T可以用目標(biāo)用戶(hù)鍵盤(pán)的每一個(gè)按鍵聲音來(lái)訓(xùn)練一個(gè)機(jī)器學(xué)習(xí)模塊,然后使用這個(gè)模塊并根據(jù)用戶(hù)敲擊鍵盤(pán)的聲音來(lái)判斷他所輸入的數(shù)據(jù)。
該項(xiàng)目是意大利帕多瓦大學(xué)(SPRITZ Group)和美國(guó)加州大學(xué)歐文分校(SPROUT)的一個(gè)合作研究項(xiàng)目。如果你想了解更多相關(guān)信息,可以訪問(wèn)該項(xiàng)目主頁(yè)。
如果你打算在自己的研究項(xiàng)目中使用S&T的話(huà),請(qǐng)?jiān)谀愕膱?bào)告中引用我們的論文:
Compagno, A., Conti, M., Lain, D., &Tsudik, G. (2017, April).
Don’t Skype & Type!: AcousticEavesdropping in Voice-Over-IP. In Proceedings of the 2017 ACM on AsiaConference on Computer and Communications Security (pp. 703-715). ACM. |
工具介紹
S&T是建立在操作鏈概念之上的,并通過(guò)基本模塊的組合來(lái)實(shí)現(xiàn)其功能。這種模塊化的設(shè)計(jì)將允許用戶(hù)能夠?qū)γ恳粋€(gè)階段的操作進(jìn)行自定義配置。
操作鏈主要由以下四大主模塊組成:監(jiān)聽(tīng)器模塊、調(diào)度器模塊、機(jī)器學(xué)習(xí)模塊和輸出模塊。每一個(gè)模塊都可以加載不同的功能函數(shù),并且還可以與之前的或之后的模塊進(jìn)行協(xié)同工作。每一個(gè)功能函數(shù)都有自己的子進(jìn)程,并且使用了multiprocessing.Queue來(lái)進(jìn)行通信。
監(jiān)聽(tīng)器功能負(fù)責(zé)加載聲音文件,然后將其傳遞給調(diào)度器。接下來(lái),調(diào)度器會(huì)從音頻文件或音頻流中提取出鍵盤(pán)的擊鍵聲音,然后將其傳遞給機(jī)器學(xué)習(xí)模塊來(lái)進(jìn)行分類(lèi)。最后的結(jié)果會(huì)傳遞給輸出模塊,然后給用戶(hù)展示結(jié)果。
目標(biāo)用戶(hù)視角:
攻擊者視角:
工具使用
首先,你需要生成一個(gè)sklearn.Pipeline,其中包含有一個(gè)分類(lèi)器以及其他你需要轉(zhuǎn)換的數(shù)據(jù)。比較簡(jiǎn)單的方法就是使用generate_model來(lái)完成這一步操作,然后向其發(fā)送訓(xùn)練數(shù)據(jù):
- generate_model.pytraining_files_and_folders output_model [...]
所有的訓(xùn)練數(shù)據(jù)(文件)都以參數(shù)的形式進(jìn)行傳遞,訓(xùn)練模塊將會(huì)保存在特定路徑。需要注意的是,訓(xùn)練用的聲音數(shù)據(jù)必須是.wav格式,然后與wav文件同名的.txt文件中必須包含相對(duì)應(yīng)的Groud Truth(簡(jiǎn)言之就是機(jī)器學(xué)習(xí)中的真實(shí)值),每一個(gè)目標(biāo)為一行。Groud Truth中空格不會(huì)被當(dāng)作字符,請(qǐng)用其他的字符替換。
啟動(dòng)S&T之后,我們可以通過(guò)命令行接口參數(shù)來(lái)手動(dòng)指定操作鏈:
- main.py --listener wavfile --dispatcheroffline ...
或者也可以直接使用opmodes來(lái)進(jìn)行自動(dòng)加載:
- main.py --opmode from_file
使用樣例
利用file1.wav、file1.txt以及folder1和folder2中的所有文件(訓(xùn)練數(shù)據(jù))來(lái)生成一個(gè)機(jī)器學(xué)習(xí)模塊,然后將生成的模塊保存在folder3/model目錄下:
- generate_model.py file1.wav file1.txtfolder1 folder2 folder3/model
運(yùn)行S&T,記錄下的目標(biāo)鍵盤(pán)聲音文件為targer.wav,使用folder3/model目錄下的pipeline:
- main.py --opmode from_file --targettarget.wav --pipeline folder3/model
運(yùn)行S&T,記錄下的目標(biāo)鍵盤(pán)聲音文件為targer.wav,使用folder3/model目錄下的pipeline,手動(dòng)指定監(jiān)聽(tīng)器以及程序調(diào)度塊:
- main.py --listener wavfile --dispatcheroffline --target target.wav --pipeline folder3/model
工具要求
此后我們會(huì)為該軟件提供一個(gè)完整的安裝程序以及依賴(lài)組件管理功能。但目前來(lái)說(shuō),你需要手動(dòng)安裝該工具的依賴(lài)組件:
- sklearn
- numpy
- python_speech_features
除此之外,如果你想利用S&T來(lái)竊取目前所有已知語(yǔ)言的信息,你可以在/dictionaries目錄下存放你自己的字典文件。
未完成的內(nèi)容
- 編寫(xiě)完整的操作文檔;
- 上傳單元測(cè)試;