JS病毒分析总结

记录一次 JS病毒分析过程中遇到的各类问题和JS的一些语法:
第一部分:这一部分主要就是说一下这个JS病毒的加解密的过程:
刚拿到病毒的时候,跑动态的时候,发现病毒不能直接运行,用notepad++打开之后,发现里边有加密过的数组(其实这一步也算不上加密,只不过是一个数字和ASCII码的转换),而且发现里边都是JS代码(刚拿到病毒样本的时候,病毒样本是.sct文件),大概扫了一眼,这个样本的主要任务就是就是释放一个taskmgr.js的文件,至于具体的向病毒的一些功能什么的没有实现,所以猜测主要的功能实现应该是在taskmgr.js文件中,下图是样本文件的原图:
JS病毒分析总结_第1张图片
可以看到虽然代码的主体部分是JS,但是在代码的开头和结尾部分我们可以看到一些无用的标签这样形式的代码,我们先把这些无用的标签删除之后 ,就可以把这个JS样本运行起来,运行起来之后,可以看到它释放了两个文件,都是JS文件,其中就有taskmgr.js文件。其中的一些主要行为之后再做总结,接下来是我在分析这个样本的时候,遇到的一些JS的语法知识:
1、设置文件和文件夹属性
0 = 普通文件。没有设置任何属性。
ReadOnly = 1  文件是只读的
Hidden = 2    文件是隐藏的
System = 4   文件是系统文件
Directory = 16  文件是一个目录
Archive = 32   文件的存档状态
Device = 64   保留供将来使用
Normal = 128  文件正常,没有其他属性
Temporary = 256  文件是临时文件
SparseFile = 512   文件是稀疏文件,通常是占用大空间的空文件
ReparsePoint = 1024 文件包含一个重新分析点,它是一个与文件或目录关联的用户定义的数据块。
Compressed = 2048 文件已压缩。
Offline = 4096    文件已脱机。文件数据不能立即供使用。
NotContentIndexed = 8192  操作系统的内容索引服务不会创建此文件的索引。
Encrypted = 16384  该文件或目录是加密的。对于文件来说,表示文件中的所有数据都是加密的。对于目录来说,表示新创建的文件和目录在默认情况下是加密的。
检查文件属性的源码(简单的源码示例)

using System;
using System.IO;
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            FileAttributes attributes = File.GetAttributes("c:/Temp/testfile.txt");//要检查的文件
            if ((attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)//是否是相应的属性,这块可以是其他属性
            {
                Console.WriteLine("read-only file");
            }
            else
            {
                Console.WriteLine("not read-only file");
            }
        }
    }
}

2、删除指定文件:DeleteFile函数DeleteFile(FileSpc[,force]);
FileSpc是指定的文件的名称(可以包含路径),force是可选项布尔值
3、GetParentFolderName()函数作用:获取指定路径的最后一个文件或者文件夹的父文件夹
使用方法:object.GetParentFolderName(path),object是FileStreamObject的名称,path是指定的路径
4、Console.Write表示向控制台直接写入字符串,不进行换行,可继续接着前面的字符写入。
Console.WriteLine表示向控制台写入字符串后换行。
Console.Read表示从控制台读取字符串,不换行。
Console.ReadLine表示从控制台读取字符串后进行换行。
Console.ReadKey表示获取用户按下的下一个字符或功能键,按下的键显示在控制台窗口中。
Console.Beep通过控制台扬声器播放提示音。
Console.Clear清楚控制台缓冲区和相应的控制台窗口的显示信息。
5、去掉文件的扩展名(去掉文件的后缀名):fileName.substring(fileName.lastIndexOf("."),fileName.length()))
6、taskkill的作用:结束指定的进程
参数列表:
/S system 指定要连接到的远程系统。
/U [domain]user 指定应该在哪个用户上下文
执行这个命令。
/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。
/F 指定要强行终止的进程。
/FI filter 指定筛选进或筛选出查询的的任务。
/PID process id 指定要终止的进程的PID。
/IM image name 指定要终止的进程的映像名称。通配符 '*'可用来指定所有映像名。
/T Tree kill: 终止指定的进程和任何由此启动的子进程。
/? 显示帮助/用法。
8、JS的文件属性:
属性 描述
Attributes 设置或返回文件或文件夹的属性
DateCreated 返回指定文件或文件夹的创建时间
DateLastAccessed 返回最近访问文件或文件夹的创建时间
DateLastModified 返回最后修改指定文件和文件夹的日期和日期
Drive 返回指定文件或文件夹所在的驱动器的驱动器号
Name 设置或返回文件或文件夹的名称
ParentFolder 返回指定文件或文件夹的父文件夹对象
Path 返回指定文件或文件夹或驱动器的路径
ShortName 返回短名称
ShortPath 返回短路径
Size 对于文件,以字节为单位返回指定文件的大小.
对于文件夹,以字节为单位返回文件夹中包含的所有子文件夹中的所有文件和子文件夹的大小
Type 返回文件或文件夹的信息.

你可能感兴趣的:(JS病毒分析总结)