コード例 #1
0
    def scan(self, filehandle, filename, fileformat, filename_ex):  # 악성코드 검사
        pmd5 = kavutil.PatternMD5('.')
        try:
            mm = filehandle

            # 미리 분석된 파일 포맷 중에 Macro 포맷이 있는가?
            if 'ff_macro' in fileformat:
                buf = mm[:]

                buf = self.p_vba_cmt.sub('', buf)  # 주석문 제거
                buf = self.p_vba.sub('', buf)  # 불필요한 정보 제거
                buf = self.p_space.sub('', buf)  # 공백 제거
                buf = buf.lower()  # 영어 소문자로 통일

                # fmd5 = crytolib.md5(buf)
                fsize = len(buf)
                if pmd5.match_size('macro', fsize):
                    fmd5 = hashlib.md5(buf).hexdigest()  # MD5 해시 구하기
                    vname = pmd5.scan('macro', fsize, fmd5)
                    if vname:
                        return True, vname, 0, kernel.INFECTED
                    else:
                        vstring = []
                        ret = self.aho_laroux.search(buf)
                        for n in ret:
                            vstring.append(n[1])
                        if len(set(vstring)) == 5:
                            return True, 'Virus.MSExcel.Laroux.Gen', 0, kernel.SUSPECT
        except IOError:
            pass

        # 악성코드 발견하지 못했음
        return False, '', -1, kernel.NOT_FOUND
コード例 #2
0
ファイル: emalware.py プロジェクト: hyeonjun/InfoVaccine
    def scan(self, filehandle, filename, fileformat, filename_ex):  # 악성코드 검사
        from InfonetVaccine import kernel, kavutil, crytolib
        pmd5 = kavutil.PatternMD5('.')
        try:
            mm = filehandle

            # 미리 분석된 파일 포맷 중에 PE 포맷이 있는가?
            if 'ff_pe' in fileformat:
                ff = fileformat['ff_pe']

                # 섹션을 조사한다.
                for section in ff['pe']['Sections']:
                    # 실행 속성을 가졌는가?
                    if (section['Characteristics'] & 0x20000000) == 0x20000000:
                        # 해당 섹션이 파일에서 차지하는 크기
                        fsize = section['SizeRawData']
                        # 섹션 크기가 emalware 악성코드 패턴에 존재하는가?
                        if pmd5.match_size('emalware', fsize):
                            # 섹션의 MD5 해시 계산
                            foff = section['PointerRawData']
                            fmd5 = crytolib.md5(mm[foff:foff + fsize])
                            # emalware 악성코드 패턴에서 MD5 검사
                            vname = pmd5.scan('emalware', fsize, fmd5)
                            if vname:  # 악성코드가 발견되었는가?
                                return True, vname, 0, kernel.INFECTED
        except IOError:
            pass

        # 악성코드를 발견하지 못했음을 리턴한다.
        return False, '', -1, kernel.NOT_FOUND
コード例 #3
0
    def getinfo(self):  # 플러그인 엔진의 주요 정보
        pmd5 = kavutil.PatternMD5('.')
        info = dict()  # 사전형 변수 선언

        info['author'] = 'Hyeon Jun'  # 제작자
        info['version'] = '1.0'  # 버전
        info['title'] = 'Macro Engine'  # 엔진 설명
        info['kmd_name'] = 'macro'  # 엔진 파일 이름
        info['sig_num'] = pmd5.get_sig_num('macro') + 1  # 진단/치료 가능한 악성코드 수

        return info
コード例 #4
0
ファイル: emalware.py プロジェクト: hyeonjun/InfoVaccine
    def getinfo(self):  # 플러그인 엔진의 주요 정보
        from InfonetVaccine import kavutil
        pmd5 = kavutil.PatternMD5('.')
        info = dict()  # 사전형 변수 선언

        info['author'] = 'Hyeon Jun'  # 제작자
        info['version'] = '1.0'  # 버전
        info['title'] = 'eMalware Engine'  # 엔진 설명
        info['kmd_name'] = 'emalware'  # 엔진 파일 이름
        info['sig_num'] = len(self.listvirus())

        return info
コード例 #5
0
ファイル: emalware.py プロジェクト: hyeonjun/InfoVaccine
    def listvirus(self):  # 진단 가능한 악성코드 리스트
        from InfonetVaccine import kavutil
        pmd5 = kavutil.PatternMD5('.')
        vlist = pmd5.get_sig_vlist('emalware')
        vlist.append('Backdoor.Linux.Mirai.a.gen')
        vlist = list(set(vlist))
        vlist.sort()

        vlists = []
        for vname in vlist:
            vlists.append(kavutil.normal_vname(vname))

        vlists.append(kavutil.normal_vname('<n>AdWare.Win32.Sokuxuan.gen'))

        return vlists
コード例 #6
0
 def listvirus(self):  # 진단 가능한 악성코드 리스트
     pmd5 = kavutil.PatternMD5('.')
     vlist = pmd5.get_sig_vlist('macro')
     vlist.append('Virus.MSExcel.Laroux.Gen')
     vlist.sort()
     return vlist