欢迎访问Sunbet官网(www.sunbet.us),Allbet欧博官网(www.ALLbetgame.us)!

首页Sunbet_安全工具正文

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备

de64384a174e12dc2017-12-02627安全工具工具

Author:zzzhhh

1、媒介

  YARA是一款旨在资助歹意软件研究人员辨认和分类歹意软件样本的开源对象,运用YARA能够基于文本或二进制情势建立歹意软件家属形貌与婚配信息。如今曾经被多家公司所运用于本身的产物。

2、YARA-划定规矩撰写

  YARA划定规矩的字符串有三种范例:文本字符串、十六进制字符串、正则表达式。文本字符串用来界说文件或历程内存中可读型内容,十六进制字符串用来界说字节内容,正则表达式可用在文本字符串和十六进制字符串中。

rule HexExample  /* 划定规矩称号 */
{

    strings: /* 字符串,可运用文本字符串、十六进制字符串、正则表达式 */
        $hex_string = {6A 40 68 00 30 00 00 6A 14 8D 91}
        $char_string = "UVODFRYSIHLNWPEJXQZAKCBGMT"
    condition: /* 前提地区 */
        $hex_string or $char_string
}
`

3、YARA运用

  除依据特性用来搜刮病毒样本,还能够经由过程某些壳的特性推断软件用了啥壳。由于上传的可疑样本都会被生存到VT数据库中,所以经由过程VT还能够搜刮到指定字符串的隐秘级别文档。

3.1 VT运用

1、运用VT账户登录VT->hunting模块

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第1张

2、在Rulesets选项中Edit增加YARA划定规矩并生存

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第2张

3、在Rulesets选项中Settingss设置本身的联络邮箱并生存,用于猎取检索结果。

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第3张

4、设置完Rulesets中的YARA划定规矩后便可在Notifications选项中失掉想要检索的样本

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第4张

5、示例

1)手艺细节

  DDE协定是Microsoft用来许可两个正在运转的运用程序同享相反数据的几种要领之一。 该协定正在被数以千计的运用程序运用,包孕MS Excel,MS Word和Visual Basic停止数据交互。由于DDE是Microsoft的正当功用,因而大多数防病毒解决方案都不会符号任何正告或阻挠运用DDE字段的文档。

  没有任何限定或检测的情况下,点击翻开歹意文档都有可能在盘算机上运转歹意代码。运用DDE的文档会运转一个控制台敕令,运用PowerShell敕令在受害者的机械上装置歹意软件。

运用要领:

新建一个Word文档,经由过程Ctrl+F9增加一个域,然后修正域代码为:

{ DDEAUTO c:\\windows\\system32\\cmd.exe " /k notepad.exe" }
{ DDE c:\\windows\\system32\\cmd.exe " /k notepad.exe" }

2)平安事宜

  这类DDE进击手艺初次被高等延续要挟(APT)黑客构造APT28运用,FireEye公司宣布了最新的要挟谍报申报《APT28: At The Center for The Storm(APT28:位于风暴中央)》。在此申报中FireEye认定有名的APT28构造就是俄罗斯当局支撑的黑客构造。连系本次用YARA划定规矩猎取的样本,运用样本里的C&C信息还联系关系到DDE以后还被少量的Locky类讹诈病毒所运用。

3)YARA划定规矩

  经由过程Github搜刮现有DDE YARA划定规矩停止婚配。

rule Office_DDEAUTO_field {
  strings:
    $a = /<w:fldChar\s+?w:fldCharType="begin"\/>.+?\b[Dd][Dd][Ee][Aa][Uu][Tt][Oo]\b.+?<w:fldChar\s+?w:fldCharType="end"\/>/
  condition:
    $a
}

rule Office_DDE_field {
  strings:
    $a = /<w:fldChar\s+?w:fldCharType="begin"\/>.+?\b[Dd][Dd][Ee]\b.+?<w:fldChar\s+?w:fldCharType="end"\/>/
  condition:
    $a
}

rule Office_OLE_DDEAUTO {
  strings:
    $a = /\x13\s*DDEAUTO\b[^\x14]+/ nocase
  condition:
    uint32be(0) == 0xD0CF11E0 and $a
}

rule Office_OLE_DDE {
  strings:
    $a = /\x13\s*DDE\b[^\x14]+/ nocase
  condition:
    uint32be(0) == 0xD0CF11E0 and $a
}

4)猎取到的样本信息

  经由过程VT就能够轻松婚配到互联网上运用这个office破绽的样本。提掏出运用这个破绽的C&C信息后,接下来就能够依据C&C信息再联系关系到详细的事宜,域名提取示例以下:

样本1-7bef74262c3624ca37a62c84b1ff3b82

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第5张

经由过程联系关系网址对应的每一个样本跟locky相干。

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第6张

样本2- 14ba65111e967d79de13cee417c89c2c

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第7张

样本3- 14ba65111e967d79de13cee417c89c2c

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第8张

3.2 Windows敕令行运用YARA

  挪用YARA须要输入两条内容。一是包罗想要运用的划定规矩的文件(无论是源代码照样编译后的情势)、二是被扫描的目标( 目标能够是文件,文件夹或历程)

示例:

----------------------------------------------

申博|网络安全巴士站【https://www.bus123.net/】

申博|网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。。

----------------------------------------------
yara32.exe -m -w -f -r AllSigs.yarc C:\Users\AT\Desktop\YARA进修\Yara

-m 打印元数据
  元数据(MetaData)的目标在于对划定规矩形貌停止分外的形貌存储

-w 禁用正告信息

-f 疾速婚配情势

-r 递归搜刮目次

输入结果:

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第9张

  划定规矩文件能够间接源代码的情势运用,也能够先用yarac对象编译后运用。 若是盘算以相反的划定规矩屡次挪用YARA,以编译情势运用YARA划定规矩能够节约更多时候。由于关于YARA来讲,加载编译划定规矩要比一遍又一遍编译相反的划定规矩更快。

  编译YARA划定规矩的批处理代码以下,代码中默许寄存划定规矩目次在C:\Yara\,编译后的库途径和名字为C:\Yara\AllSigs.yarc,这个途径能够本身界说:

@echo off

::将本身途径设置为变量
Set CurPath=%CD%

::删除原划定规矩文件
del C:\Yara\AllSigs.yara

::把以后途径下的文件名字悉数读取
::type敕令剖析*.yara内容追加到AllSigs.yara
for /r %%i in (*.yara) do (
    type %%i >> AllSigs.yara
)

::yarac 为编译yara对象,将AllSigs.yara编译成AllSigs.yarc
call C:\Yara\yarac32.exe C:\Yara\AllSigs.yara C:\Yara\AllSigs.yarc

::若是编译胜利跳转,不胜利则打印失足误码,删除划定规矩文件后跳转到终了地位
if %ERRORLEVEL% == 0 goto :next
echo Errors encountered during yara compliation.  Exited with status: %errorlevel%
del C:\Yara\AllSigs.yara
goto :endofscript

::打印出编译胜利
:next
echo Yara compilation successful!

:endofscript

编译终了后,能够运用以下批处理代码对编译后的YARA数据库停止挪用。

@echo off
C:\Yara\yara32.exe -m -w -f -r C:\Yara\AllSigs.yarc %1

3.3 运用python运用YARA

依照编译和装置YARA库,就能够运用Python运用YARA功用了。步调以下:

1、导入yara模块

import yara

2、编译YARA划定规矩,然后将它们运用到数据中,划定规矩能够从文件途径编译:

rules = yara.compile(filepath='/foo/bar/myrules')

3、Rules实例有一个match要领,它许可将划定规矩运用于文件或是历程,这里给出运用文件的示例代码以下:

matches = rules.match(‘/foo/bar/my_file’)

然则也能够将划定规矩运用于Python字符串:

with的要领:

with open('/foo/bar/my_file', 'rb') as f:
  matches = rules.match(data=f.read())

翻开文件流的要领:

fp = open(mapath, 'rb')
matches = rule.match(data=fp.read())

  中心代码进修终了以后,就把重心点从所学运用到批量编译划定规矩,批量扫描上来吧。不发起把目次寄存在中文目次下。

yara_database_test.py

#/usr/bin/python
#coding=utf-8

import yara
import os
import sys
reload(sys)
sys.setdefaultencoding('utf8')

# 猎取目次内的yara划定规矩文件
# 将yara划定规矩编译
def getRules(path):
    filepath = {}
    for index,file in enumerate(os.listdir(path)):
        rupath = os.path.join(path, file)
        key = "rule"+str(index)
        filepath[key] = rupath
    yararule = yara.compile(filepaths=filepath)
    return yararule

# 扫描函数
def scan(rule, path):
    for file in os.listdir(path.decode("utf-8")):
        mapath = os.path.join(path, file)
        fp = open(mapath, 'rb')
        matches = rule.match(data=fp.read())
        if len(matches)>0:
            print file,matches

if __name__ == '__main__':
    rulepath = sys.argv[1]
    malpath = sys.argv[2]
    # rulepath = "D:\\rule_test"   # yara划定规矩目次
    # malpath ="D:\\test_vir" # 木马存在目次
    #yara划定规矩编译函数挪用
    yararule = getRules(rulepath)
    # 扫描函数挪用
    scan(yararule, malpath)

rule_test目次内容

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第10张

test_vir目次内容

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第11张

运转以下:

【歹意代码对象】用命令行与Python运用YARA划定规矩-辨认歹意木马和脱壳必备  安全工具 工具 第12张

4、参考

yara手册
http://yara.readthedocs.io/en/v3.7.0/

yara引见
http://virustotal.github.io/yara/

歹意软件情势婚配利器 – YARA
http://www.freebuf.com/articles/system/26373.html

VirusTotal Hunting示例
https://www.virustotal.com/#/hunting-overview

VirusTotal Hunting运用资助
https://www.virustotal.com/intelligence/help/malware-hunting/

教你构建本身的yara数据库
http://www.freebuf.com/sectool/92399.html

Yara官方预置划定规矩
https://github.com/Yara-Rules/rules

yarapython
http://yara.readthedocs.io/en/v3.4.0/yarapython.html

网友评论