恶意程序报告在线查询工具

技术 作者:HackerEye 2016-08-18 03:34:08
前言 有些时候,我们在使用电脑或者为客户去做一些安全检查的时候,难免碰见一些恶意程序或者病毒,大部分都是常见的,不稀奇的东西,当然了,也有可能会遇到一些特殊的病毒(例如那些一言不合就免杀了,而且相当顽固的病毒),特殊的病毒先不说,碰见常见的病毒,或者疑似病毒的东西,我们要怎么去查呢?常规的病毒分析步骤多,门槛高,对于初学者有些困难,老司机也得花不少时间去分析。虽然现在有很多主流的在线分析平台,可以供我们上传样本去实现自动化分析。 先说下写这个工具的初衷,因为工作中,经常做一些恶意程序分析工作,做的时间长了,真心比较枯燥,又累。。自己懒得分析的时候,还得去各种网站上查询某个程序的MD5样本是否被其他人发现过,或者提交过,但是轮番的打开网站,填写MD5,然后搜索,如果没有结果,还得再去上传,然后再等待结果,即便如此,那些我们查过的,遇到过的病毒或恶意程序的MD5,我们谁也不会记住在哪提交过啊。等再次遇到了,依旧重复各种动作,再去一堆网站上查,算是偷懒吧,顺手所以写了个小工具,去帮助我去互联网搜集一下相关病毒或可疑程序的信息。 这个工具呢,是用C#写的,主要通过MD5,自动去特定的网站搜索历史信息,并且把自己查过的内容,选择性的保存到本地,以便日后再查。 开发思路 找在线分析平台的MD5的查询地址和规律 主要涉及到的在线分析平台为:
    			https://habo.qq.com/file/showdetail?md5=

    			http://fireeye.ijinshan.com/analyse.html?md5=

    			http://www.threatexpert.com/report.aspx?md5=

    			http://md5.virscan.org/

    			https://virusscan.jotti.org/zh-CN/search/hash/

    			http://a.virscan.org/
获取查询到,和未查询到的网页信息特征 比如用哈勃分析系统举例,查询到的页面,和未查询到的页面,最明显的一个区别是,查询到的页面代码中,有var md5 = “关键字,而未查询到的木有。 所以,代码可以这么写:
string s0 = "var md5 = \"";
            string url = "https://habo.qq.com/file/showdetail?md5=" + textBox1.Text;
            WebRequest wRequest = WebRequest.Create(url);
            WebResponse wResponse = wRequest.GetResponse();
            Stream stream = wResponse.GetResponseStream();
            StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default);
            string r = reader.ReadToEnd();   //url返回的值
            wResponse.Close();
             if (!r.Contains(s0))
            {
                MessageBox.Show("未找到匹配样本");
            }
先将特征保存到s0变量中,将网站查询页面地址+textBox1.Text输入的内容保存到url变量中 然后通过webrequest方法进行操作,并将捕获到的页面内容存到r遍历中。 通过if进行判断,如果r变量中不包含s0变量中的信息,则提示“未找到匹配样本”,用else输出你想展示的东西; 例如:
else
            {
                Process.Start(url);
                System.Threading.Thread.Sleep(5000);
                if (MessageBox.Show("是否将该MD5本地保存?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    StreamWriter fs3 = new StreamWriter(@"d:\MD5.txt", true);
                    fs3.WriteLine(url);
                    fs3.Close();
                }
                else
                { 
                    //
                }
                
                 
            }
如果匹配成功,则通过process来打开完整的url页面。 这里用到了sleep,先说下原因。。。 因为打开链接后,我还想将这次打开的链接保存到本地,所以就选择性的弄了个提示框,延迟5秒的意思是,先打开浏览器,让大家先看到自己查看的内容是什么,有没有危害,是高风险呢,还是安全的,再决定这个MD5信息该不该保存到本地。 如果确定要保存的话,就通过:
StreamWriter fs3 = new StreamWriter(@"d:\MD5.txt", true);
                    fs3.WriteLine(url);
来写入文件。。本来打算把这个MD5.TXT创建到程序当前目录的,但是怕有人放到桌面,不小心删除了,或者系统重新做了,自己辛苦积累的MD5信息就没了。。所以就直接强迫大家存到D:\盘下了。。。 保存到本地,如何利用起来 这个有人觉得没什么卵用,但是个人觉得,还是有这么一个功能的好,将查询过的链接保存到本地,是为了让大家在没有网络的时候,也能知道自己有没有查过某个MD5信息。前边在查询完,让大家自主选择性保存MD5,也是这个意思,安全的,么有问题的,相信没人想保存,高风险的,有问题的,保存起来,等下次即使没有网了,还可以通过历史记录的方式,来判断下这个MD5所涉及的程序,有没有问题了。。。 下面说下本地如何去读取和操作。。。这个方法百度很多,很多。。我简单说下。。。
 StreamReader objReader = new StreamReader(@"d:\MD5.txt");
            ArrayList arrText = new ArrayList();
            if (objReader.ReadToEnd().Contains(textBox1.Text))
            {
                string url2 = "https://habo.qq.com/file/showdetail?md5=" + textBox1.Text;
                StreamReader objReader1 = new StreamReader(@"d:\MD5.txt");
                if (objReader1.ReadToEnd().Contains(url2))
                {
                    Process.Start(url2);
                }
                    
                else
                {
                    MessageBox.Show("该MD5值还你还没有检索过");
                }
                
            }
            else
            {
                MessageBox.Show("该MD5值还你还没有检索过");
            }
            objReader.Close();
方法都一样,还是将文件存放路径保存到变量中,然后通过objReader.ReadToEnd().Contains(textBox1.Text)来匹配输入框中的内容,如果匹配成功,就打开网站链接。。这个就不多说了,简单的 整体搜索历史记录 这里我直接贴代码吧。。
StreamReader objReader = new StreamReader(@"d:\MD5.txt"); 

 ArrayList arrText = new ArrayList(); 

 string url1 = "https://habo.qq.com/file/showdetail?md5=" + textBox7.Text; 

 string url2 = "http://fireeye.ijinshan.com/analyse.html?md5=" + textBox7.Text; 

 string url3 = "http://www.threatexpert.com/report.aspx?md5=" + textBox7.Text; 

 string url4 = "http://md5.virscan.org/" + textBox7.Text; 

 string url5 = "https://virusscan.jotti.org/zh-CN/search/hash/" + textBox7.Text;

 string url6 = "http://a.virscan.org/" + textBox7.Text;

 if (objReader.ReadToEnd().Contains(textBox7.Text)) 

 { 

 StreamReader objReader1 = new StreamReader(@"d:\MD5.txt"); 

 if (textBox7.Text != null) 

 { 

 if (

objReader1.ReadToEnd().Contains(url1)) 

 Process.Start(url1); 

 }

 StreamReader objReader2 = new StreamReader(@"d:\MD5.txt"); 

 if (objReader2.ReadToEnd().Contains(url2)) 

 {

 Process.Start(url2); 

 } 

 StreamReader objReader3 = new StreamReader(@"d:\MD5.txt"); 

 if (objReader3.ReadToEnd().Contains(url3)) 

 { 

 Process.Start(url3);

 } 

 StreamReader objReader4 = new StreamReader(@"d:\MD5.txt");

 if (objReader4.ReadToEnd().Contains(url4)) 

 { 

 Process.Start(url4); 

 } 

 StreamReader objReader5 = new StreamReader(@"d:\MD5.txt"); 

 if (objReader5.ReadToEnd().Contains(url5)) 

 { 

 Process.Start(url5); 

 } 

 StreamReader objReader6 = new StreamReader(@"d:\MD5.txt"); 

 if (objReader6.ReadToEnd().Contains(url6))

 { 

 Process.Start(url6);

 } 

 } 

 else 

 { 

 MessageBox.Show("该MD5值还你还没有检索过"); 

 }
这里实现的功能是,在历史的MD5.txt中,搜索指定的MD5的相关历史链接,如果匹配到,则会将所有匹配到该MD5值的链接全部打开,这样就一目了然了。。。。
    https://habo.qq.com/file/showdetail?md5=32d6c35357afc1df3378233a80cb1646

    http://fireeye.ijinshan.com/analyse.html?md5=71989e3543b32330c43ea6a5acc41382

    http://md5.virscan.org/54d833fbeed1015f079139d4c674efb3

    http://a.virscan.org/54d833fbeed1015f079139d4c674efb3

    http://www.threatexpert.com/report.aspx?md5=FD6260195E783C275D0F90047F5A3069

    http://md5.virscan.org/c5a3bc9d76d42aacf4610c440657d27e

    https://virusscan.jotti.org/zh-CN/search/hash/c5a3bc9d76d42aacf4610c440657d27e

    http://a.virscan.org/c5a3bc9d76d42aacf4610c440657d27e

    https://habo.qq.com/file/showdetail?md5=32d6c35357afc1df3378233a80cb1646
比如说:当我们查询c5a3bc9d76d42aacf4610c440657d27e这个MD5时,历史文件中,有3个网站都匹配过这个MD5值,点击查询,则会依次打开这三个网站,有关c5a3bc9d76d42aacf4610c440657d27e这个MD5的信息
    http://md5.virscan.org/c5a3bc9d76d42aacf4610c440657d27e

    https://virusscan.jotti.org/zh-CN/search/hash/c5a3bc9d76d42aacf4610c440657d27e

    http://a.virscan.org/c5a3bc9d76d42aacf4610c440657d27e
使用这个小工具有两个前提: ①电脑装了.NET4.0环境; ②你有一个查询MD5值的工具; 工具推荐使用winMD5,简单,轻便,还能批量。。 本来打算在工具里集成MD5查询功能,但是实在是懒得不行了。明天又得各种开会,这个留着后期再说吧。。。 工具截图: 恶意程序报告1 恶意程序报告2 如果查询的MD5值能匹配到的话,就会提示是否保存MD5信息。。 恶意程序报告3 当查询历史记录时,MD5信息没有匹配到,就会有如下提示,在线查询也是如此: 恶意程序报告4 这个截图,是历史记录一键查询功能,它会自动匹配到本地MD5.TXT中所查询过的内容,匹配成功后,则会依次打开相关联的所有站点。 恶意程序报告5 注:里面那个上传样本功能直接忽略,只做了个打开按钮,打开的链接是对应平台的上传页面,为了好看。。 其实这个还少写了一个功能,就是批量查询,整个界面其实两个功能足够,一个批量查询,一个批量读取。。。 最近有些繁忙,没时间做更改了,将就着用吧。 网盘地址:传送门 http://pan.baidu.com/s/1eRSyz7s

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接