[系统安全]五十.恶意家族分类(2)基于API序列和深度学习的恶意家族分类实例详解

admin 2026-02-04 01:08:17 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详解基于API序列和深度学习的恶意家族分类方法。作者利用Keras实现了CNN、BiLSTM等模型进行训练测试,展示了完整代码与评估结果。文章分析了模型性能差异,并探讨了对抗变种与语义增强等改进方向,为恶意代码检测提供实战参考。 综合评分: 85 文章分类: 恶意软件,AI安全,二进制安全



3.实验结果

最终运行结果及其生成文件如下图所示:

输出中间过程结果如下所示:

%20%20%20no%20%20...%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20api0%20%20%201%20%20...%20%20GetSystemInfo;HeapCreate;NtAllocateVirtualMemo...1%20%20%202%20%20...%20%20GetSystemInfo;HeapCreate;NtAllocateVirtualMemo...2%20%20%203%20%20...%20%20NtQueryValueKey;GetSystemTimeAsFileTime;HeapCr...3%20%20%204%20%20...%20%20NtQueryValueKey;NtClose;NtAllocateVirtualMemor...4%20%20%205%20%20...%20%20NtOpenFile;NtCreateSection;NtMapViewOfSection;...
[5%20rows%20x%204%20columns]Label:0%20%20%20%20class11%20%20%20%20class12%20%20%20%20class13%20%20%20%20class14%20%20%20%20class15%20%20%20%20class16%20%20%20%20class17%20%20%20%20class18%20%20%20%20class19%20%20%20%20class1Name:%20apt,%20dtype:%20objectLabelEncoder[[0]%20[0]%20[0]%20[0]%20[0]%20[0]%20[0]%20[0]%20[0]%20[0]]1241['class1'%20'class2'%20'class3'%20'class4'%20'class5']OneHotEncoder:[[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]%20[1.%200.%200.%200.%200.]]0%20%20%20%20GetSystemInfo;HeapCreate;NtAllocateVirtualMemo...1%20%20%20%20GetSystemInfo;HeapCreate;NtAllocateVirtualMemo...2%20%20%20%20NtQueryValueKey;GetSystemTimeAsFileTime;HeapCr...3%20%20%20%20NtQueryValueKey;NtClose;NtAllocateVirtualMemor...4%20%20%20%20NtOpenFile;NtCreateSection;NtMapViewOfSection;...Name:%20api,%20dtype:%20object<class%20'pandas.core.series.Series'><keras_preprocessing.text.Tokenizer%20object%20at%200x0000028E55D36B08>
('regqueryvalueexw',%201)('ntclose',%202)('ldrgetprocedureaddress',%203)('regopenkeyexw',%204)('regclosekey',%205)('ntallocatevirtualmemory',%206)('sendmessagew',%207)('ntwritefile',%208)('process32nextw',%209)('ntdeviceiocontrolfile',%2010)===================('getsysteminfo',%202651)('heapcreate',%202996)('ntallocatevirtualmemory',%20115547)('ntqueryvaluekey',%2024120)('getsystemtimeasfiletime',%2052727)('ldrgetdllhandle',%2025135)('ldrgetprocedureaddress',%20199952)('memcpy',%209008)('setunhandledexceptionfilter',%201504)('ntcreatefile',%2043260)
(1241,%20200)(459,%20200)(650,%20200)[[%20%203%20135%20%20%203%20%20%203%20%20%202%20%2021%20%20%203%20%20%203%20%20%204%20%20%203%20%2096%20%20%203%20%20%203%20%20%204%20%2096%20%20%204%20%2096%20%2020%20%20%2022%20%2020%20%20%203%20%20%206%20%20%206%20%2023%20128%20129%20%20%203%20103%20%2023%20%2056%20%20%202%20103%20%2023%20%2020%20%20%203%20%2023%20%20%20%203%20%20%203%20%20%203%20%20%203%20%20%204%20%20%201%20%20%205%20%2023%20%2012%20131%20%2012%20%2020%20%20%203%20%2010%20%20%202%20%2010%20%20%202%20%2020%20%20%20%203%20%20%204%20%20%205%20%2027%20%20%203%20%2010%20%20%202%20%20%206%20%2010%20%20%202%20%20%203%20%2010%20%20%202%20%2010%20%20%202%20%20%203%20%2010%20%20%202%20%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%20%203%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%20%203%20%20%20%203%20%20%203%20%2036%20%20%204%20%20%203%20%2023%20%2020%20%20%203%20%20%205%20207%20%2034%20%20%206%20%20%206%20%20%206%20%2011%20%2011%20%20%206%20%2011%20%20%20%206%20%20%206%20%20%206%20%20%206%20%20%206%20%20%206%20%20%206%20%20%206%20%20%206%20%2011%20%20%206%20%20%206%20%2011%20%20%206%20%2011%20%20%206%20%2011%20%20%206%20%20%20%206%20%2011%20%20%206%20%2034%20%20%203%20141%20%20%203%20140%20%20%203%20%20%203%20141%20%2034%20%20%206%20%20%202%20%2021%20%20%204%20%2096%20%20%204%20%20%2096%20%20%204%20%2096%20%2023%20%20%203%20%20%203%20%2012%20131%20%2012%20%2010%20%20%202%20%2010%20%20%202%20%20%204%20%20%205%20%2027%20%2010%20%20%202%20%20%20%206%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2010%20%20%202%20%2036%20%20%204%20%2023%20%20%205%20207%20%20%206%20%20%203%20%20%203%20%2012%20131%20%2012%20%20132%20%20%203]%20[%2027%20%20%204%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%2027%20%20%205%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%2027%20%2027%20%20%2027%20%2027%20%2027%20%2027%20%20%205%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%20%20%204%20%2027%20%20%204%20%2027%20%20%204%20%2027%20%20%205%20%2052%20%20%202%20%2021%20%20%204%20%20%205%20%20%201%20%20%201%20%20%201%20%20%205%20%2021%20%2025%20%20%20%202%20%2052%20%2012%20%2033%20%2051%20%2028%20%2034%20%2030%20%20%202%20%2052%20%20%202%20%2021%20%20%204%20%20%205%20%2027%20%20%205%20%2052%20%20%206%20%20%20%206%20%2052%20%20%204%20%20%201%20%20%205%20%20%204%20%2052%20%2054%20%20%207%20%20%207%20%2020%20%2052%20%20%207%20%2052%20%20%207%20%20%207%20%20%206%20%20%204%20%20%20%204%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%2024%20%20%205%20%20%20%205%20%20%203%20%20%207%20%2050%20%2050%20%2050%20%2095%20%2050%20%2050%20%2050%20%2050%20%2050%20%20%204%20%20%201%20%20%205%20%20%204%20%20%203%20%20%203%20%20%20%203%20%20%203%20%20%203%20%20%207%20%20%207%20%20%207%20%20%203%20%20%207%20%20%203%20%20%207%20%20%203%20%2060%20%20%203%20%20%203%20%20%207%20%20%207%20%20%207%20%20%207%20%20%2060%20%20%203%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%2052%20%2020%20%20%203%20%20%203%20%20%203%20%2014%20%2014%20%2060%20%20%2018%20%2019%20%2018%20%2019%20%20%202%20%2021%20%20%204%20%20%205%20%2018%20%2019%20%2018%20%2019%20%2018%20%2019%20%2018%20%2019%20%20%207%20%20%207%20%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%2052%20%20%207%20%20%207%20%20%207%20%20%207%20%20%207%20%2060%20%20%207%20%20%207%20%20%20%207%20%20%207]]

模型训练过程如下:

模型训练Epoch%201/15
%201/20%20[>.............................]%20-%20ETA:%205s%20-%20loss:%201.5986%20-%20accuracy:%200.2656%202/20%20[==>...........................]%20-%20ETA:%201s%20-%20loss:%201.6050%20-%20accuracy:%200.2266%203/20%20[===>..........................]%20-%20ETA:%201s%20-%20loss:%201.5777%20-%20accuracy:%200.2292%204/20%20[=====>........................]%20-%20ETA:%202s%20-%20loss:%201.5701%20-%20accuracy:%200.2500%205/20%20[======>.......................]%20-%20ETA:%202s%20-%20loss:%201.5628%20-%20accuracy:%200.2719%206/20%20[========>.....................]%20-%20ETA:%203s%20-%20loss:%201.5439%20-%20accuracy:%200.3125%207/20%20[=========>....................]%20-%20ETA:%203s%20-%20loss:%201.5306%20-%20accuracy:%200.3348%208/20%20[===========>..................]%20-%20ETA:%203s%20-%20loss:%201.5162%20-%20accuracy:%200.3535%209/20%20[============>.................]%20-%20ETA:%203s%20-%20loss:%201.5020%20-%20accuracy:%200.369810/20%20[==============>...............]%20-%20ETA:%203s%20-%20loss:%201.4827%20-%20accuracy:%200.396911/20%20[===============>..............]%20-%20ETA:%203s%20-%20loss:%201.4759%20-%20accuracy:%200.402012/20%20[=================>............]%20-%20ETA:%203s%20-%20loss:%201.4734%20-%20accuracy:%200.403613/20%20[==================>...........]%20-%20ETA:%203s%20-%20loss:%201.4456%20-%20accuracy:%200.425514/20%20[====================>.........]%20-%20ETA:%203s%20-%20loss:%201.4322%20-%20accuracy:%200.435315/20%20[=====================>........]%20-%20ETA:%202s%20-%20loss:%201.4157%20-%20accuracy:%200.446916/20%20[=======================>......]%20-%20ETA:%202s%20-%20loss:%201.4093%20-%20accuracy:%200.448217/20%20[========================>.....]%20-%20ETA:%202s%20-%20loss:%201.4010%20-%20accuracy:%200.453118/20%20[==========================>...]%20-%20ETA:%201s%20-%20loss:%201.3920%20-%20accuracy:%200.460119/20%20[===========================>..]%20-%20ETA:%200s%20-%20loss:%201.3841%20-%20accuracy:%200.463820/20%20[==============================]%20-%20ETA:%200s%20-%20loss:%201.3763%20-%20accuracy:%200.467420/20%20[==============================]%20-%2020s%201s/step%20-%20loss:%201.3763%20-%20accuracy:%200.4674%20-%20val_loss:%201.3056%20-%20val_accuracy:%200.4837
Time%20used:%2026.1328806{'loss':%20[1.3762551546096802],%20'accuracy':%20[0.467365026473999],%20%20'val_loss':%20[1.305567979812622],%20'val_accuracy':%20[0.48366013169288635]}

最终预测结果如下所示:

模型预测[[%2040%20%2014%20%2011%20%20%201%20%2044]%20[%2016%20%2057%20%2010%20%20%200%20%2017]%20[%20%206%20%2030%20%2061%20%20%200%20%2023]%20[%2012%20%2020%20%2015%20%2047%20%2036]%20[%2011%20%2014%20%2019%20%20%200%20146]]%20%20%20%20%20%20%20%20%20%20%20%20%20%20precision%20%20%20%20recall%20%20f1-score%20%20%20support
%20%20%20%20%20%20%20%20%20%20%200%20%20%20%20%200.4706%20%20%20%200.3636%20%20%20%200.4103%20%20%20%20%20%20%20110%20%20%20%20%20%20%20%20%20%20%201%20%20%20%20%200.4222%20%20%20%200.5700%20%20%20%200.4851%20%20%20%20%20%20%20100%20%20%20%20%20%20%20%20%20%20%202%20%20%20%20%200.5259%20%20%20%200.5083%20%20%20%200.5169%20%20%20%20%20%20%20120%20%20%20%20%20%20%20%20%20%20%203%20%20%20%20%200.9792%20%20%20%200.3615%20%20%20%200.5281%20%20%20%20%20%20%20130%20%20%20%20%20%20%20%20%20%20%204%20%20%20%20%200.5489%20%20%20%200.7684%20%20%20%200.6404%20%20%20%20%20%20%20190
%20%20%20%20accuracy%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%200.5400%20%20%20%20%20%20%20650%20%20%20macro%20avg%20%20%20%20%200.5893%20%20%20%200.5144%20%20%20%200.5162%20%20%20%20%20%20%20650weighted%20avg%20%20%20%20%200.5980%20%20%20%200.5400%20%20%20%200.5323%20%20%20%20%20%20%20650
accuracy%200.54
%20%20%20%20%20%20%20%20%20%20%20%20%20%20precision%20%20%20%20recall%20%20f1-score%20%20%20support
%20%20%20%20%20%20%20%20%20%20%200%20%20%20%20%200.9086%20%20%20%200.4517%20%20%20%200.6034%20%20%20%20%20%20%20352%20%20%20%20%20%20%20%20%20%20%201%20%20%20%20%200.5943%20%20%20%200.5888%20%20%20%200.5915%20%20%20%20%20%20%20107%20%20%20%20%20%20%20%20%20%20%202%20%20%20%20%200.0000%20%20%20%200.0000%20%20%20%200.0000%20%20%20%20%20%20%20%20%200%20%20%20%20%20%20%20%20%20%20%203%20%20%20%20%200.0000%20%20%20%200.0000%20%20%20%200.0000%20%20%20%20%20%20%20%20%200%20%20%20%20%20%20%20%20%20%20%204%20%20%20%20%200.0000%20%20%20%200.0000%20%20%20%200.0000%20%20%20%20%20%20%20%20%200
%20%20%20%20accuracy%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%200.4837%20%20%20%20%20%20%20459%20%20%20macro%20avg%20%20%20%20%200.3006%20%20%20%200.2081%20%20%20%200.2390%20%20%20%20%20%20%20459weighted%20avg%20%20%20%20%200.8353%20%20%20%200.4837%20%20%20%200.6006%20%20%20%20%20%20%20459
accuracy&nbsp;0.48366013071895425Time%20used:%2014.170902800000002

思考: %20%20然而,整个预测结果效果较差,请读者思考,这是为什么呢?我们能不能通过调参进行优化,又如何改进算法呢?本文仅提供基本思路和代码,更多优化及完善需要读者学会独立解决,加油喔!

三.基于BiLSTM的恶意家族检测 1.模型构建

该模型的基本步骤如下:

  • 第一步%20数据读取
  • 第二步%20OneHotEncoder()编码
  • 第三步%20使用Tokenizer对词组进行编码
  • 第四步%20建立BiLSTM模型并训练
  • 第五步%20预测及评估
  • 第六步%20验证算法

构建模型如下图所示:

完整代码如下所示:

#%20-*-%20coding:%20utf-8%20-*-#%20By:Eastmount%20CSDN%202023-06-27import%20pickleimport%20pandas%20as%20pdimport%20numpy%20as%20npimport%20matplotlib.pyplot%20as%20pltimport%20seaborn%20as%20snsfrom%20sklearn%20import%20metricsimport%20tensorflow%20as%20tffrom%20sklearn.preprocessing%20import%20LabelEncoder,OneHotEncoderfrom%20keras.models%20import%20Modelfrom%20keras.layers%20import%20LSTM,%20Activation,%20Dense,%20Dropout,%20Input,%20Embeddingfrom%20keras.layers%20import%20Convolution1D,%20MaxPool1D,%20Flattenfrom%20keras.optimizers%20import%20RMSpropfrom%20keras.layers%20import%20Bidirectionalfrom%20keras.preprocessing.text%20import%20Tokenizerfrom%20keras.preprocessing%20import%20sequencefrom%20keras.callbacks%20import%20EarlyStoppingfrom%20keras.models%20import%20load_modelfrom%20keras.models%20import%20Sequentialfrom%20keras.layers.merge%20import%20concatenateimport%20time
start%20=%20time.clock()
#---------------------------------------第一步%20数据读取------------------------------------#%20读取测数据集train_df%20=%20pd.read_csv("..\\train_dataset.csv")val_df%20=%20pd.read_csv("..\\val_dataset.csv")test_df%20=%20pd.read_csv("..\\test_dataset.csv")print(train_df.head())
#%20解决中文显示问题plt.rcParams['font.sans-serif']%20=%20['KaiTi']plt.rcParams['axes.unicode_minus']%20=%20False
#---------------------------------第二步%20OneHotEncoder()编码---------------------------------#%20对数据集的标签数据进行编码%20%20(no%20apt%20md5%20api)train_y%20=%20train_df.aptval_y%20=%20val_df.apttest_y%20=%20test_df.aptle%20=%20LabelEncoder()train_y%20=%20le.fit_transform(train_y).reshape(-1,1)val_y%20=%20le.transform(val_y).reshape(-1,1)test_y%20=%20le.transform(test_y).reshape(-1,1)Labname%20=%20le.classes_
#%20对数据集的标签数据进行one-hot编码ohe%20=%20OneHotEncoder()train_y%20=%20ohe.fit_transform(train_y).toarray()val_y%20=%20ohe.transform(val_y).toarray()test_y%20=%20ohe.transform(test_y).toarray()
#-------------------------------第三步%20使用Tokenizer对词组进行编码-------------------------------#%20使用Tokenizer对词组进行编码max_words%20=%202000max_len%20=%20300tok%20=%20Tokenizer(num_words=max_words)
#%20提取token:apitrain_value%20=%20train_df.apitrain_content%20=%20[str(a)%20for%20a%20in%20train_value.tolist()]val_value%20=%20val_df.apival_content%20=%20[str(a)%20for%20a%20in%20val_value.tolist()]test_value%20=%20test_df.apitest_content%20=%20[str(a)%20for%20a%20in%20test_value.tolist()]tok.fit_on_texts(train_content)print(tok)
#%20保存训练好的Tokenizer和导入with%20open('tok.pickle',%20'wb')%20as%20handle:%20%20%20%20pickle.dump(tok,%20handle,%20protocol=pickle.HIGHEST_PROTOCOL)with%20open('tok.pickle',%20'rb')%20as%20handle:%20%20%20%20tok%20=%20pickle.load(handle)
#%20使用tok.texts_to_sequences()将数据转化为序列train_seq%20=%20tok.texts_to_sequences(train_content)val_seq%20=%20tok.texts_to_sequences(val_content)test_seq%20=%20tok.texts_to_sequences(test_content)
#%20将每个序列调整为相同的长度train_seq_mat%20=%20sequence.pad_sequences(train_seq,maxlen=max_len)val_seq_mat%20=%20sequence.pad_sequences(val_seq,maxlen=max_len)test_seq_mat%20=%20sequence.pad_sequences(test_seq,maxlen=max_len)
#-------------------------------第四步%20建立LSTM模型并训练-------------------------------num_labels%20=%205model%20=%20Sequential()model.add(Embedding(max_words+1,%20128,%20input_length=max_len))#model.add(Bidirectional(LSTM(128,%20dropout=0.3,%20recurrent_dropout=0.1)))model.add(Bidirectional(LSTM(128)))model.add(Dense(128,%20activation='relu'))model.add(Dropout(0.3))model.add(Dense(num_labels,%20activation='softmax'))model.summary()model.compile(loss="categorical_crossentropy",%20%20%20%20%20%20%20%20%20%20%20%20%20%20optimizer='adam',%20%20%20%20%20%20%20%20%20%20%20%20%20%20metrics=["accuracy"])
flag%20=%20"train"if%20flag%20==%20"train":%20%20%20%20print("模型训练")%20%20%20%20#%20模型训练%20%20%20%20model_fit%20=%20model.fit(train_seq_mat,%20train_y,%20batch_size=64,%20epochs=15,%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20validation_data=(val_seq_mat,val_y),%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20callbacks=[EarlyStopping(monitor='val_loss',min_delta=0.0001)]%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%20%20%20%20%20%20%20#%20保存模型%20%20%20%20model.save('bilstm_model.h5')%20%20%20%20%20%20del%20model%20%20#%20deletes%20the%20existing%20model%20%20%20%20%20%20%20%20#%20计算时间%20%20%20%20elapsed%20=%20(time.clock()%20-%20start)%20%20%20%20print("Time%20used:",%20elapsed)%20%20%20%20print(model_fit.history)%20%20%20%20else:%20%20%20%20print("模型预测")%20%20%20%20model%20=%20load_model('bilstm_model.h5')%20%20%20%20%20%20%20%20#--------------------------------------第五步%20预测及评估--------------------------------%20%20%20%20#%20对测试集进行预测%20%20%20%20test_pre%20=%20model.predict(test_seq_mat)%20%20%20%20confm%20=%20metrics.confusion_matrix(np.argmax(test_y,axis=1),%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20np.argmax(test_pre,axis=1))%20%20%20%20print(confm)%20%20%20%20print(metrics.classification_report(np.argmax(test_y,axis=1),%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20np.argmax(test_pre,axis=1),%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20digits=4))%20%20%20%20print("accuracy",%20metrics.accuracy_score(np.argmax(test_y,%20axis=1),%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20np.argmax(test_pre,%20axis=1)))%20%20%20%20#%20结果存储%20%20%20%20f1%20=%20open("bilstm_test_pre.txt",%20"w")%20%20%20%20for%20n%20in%20np.argmax(test_pre,%20axis=1):%20%20%20%20%20%20%20%20f1.write(str(n)%20+%20"\n")%20%20%20%20f1.close()
%20%20%20%20f2%20=%20open("bilstm_test_y.txt",%20"w")%20%20%20%20for%20n%20in%20np.argmax(test_y,%20axis=1):%20%20%20%20%20%20%20%20f2.write(str(n)%20+%20"\n")%20%20%20%20f2.close()
%20%20%20%20plt.figure(figsize=(8,8))%20%20%20%20sns.heatmap(confm.T,%20square=True,%20annot=True,%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fmt='d',%20cbar=False,%20linewidths=.6,%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cmap="YlGnBu")%20%20%20%20plt.xlabel('True%20label',size%20=%2014)%20%20%20%20plt.ylabel('Predicted%20label',%20size%20=%2014)%20%20%20%20plt.xticks(np.arange(5)+0.5,%20Labname,%20size%20=%2012)%20%20%20%20plt.yticks(np.arange(5)+0.5,%20Labname,%20size%20=%2012)%20%20%20%20plt.savefig('bilstm_result.png')    plt.show()
    #--------------------------------------第六步 验证算法--------------------------------    # 使用tok对验证数据集重新预处理    val_seq = tok.texts_to_sequences(val_content)    val_seq_mat = sequence.pad_sequences(val_seq,maxlen=max_len)        # 对验证集进行预测    val_pre = model.predict(val_seq_mat)    print(metrics.classification_report(np.argmax(val_y,axis=1),                                        np.argmax(val_pre,axis=1),                                        digits=4))    print("accuracy", metrics.accuracy_score(np.argmax(val_y, axis=1),                                             np.argmax(val_pre, axis=1)))    # 计算时间    elapsed = (time.clock() - start)    print("Time used:", elapsed)

2.实验结果

训练输出结果如下图所示:

模型训练Epoch 1/15 1/20 [>.............................] - ETA: 40s - loss: 1.6114 - accuracy: 0.2031 2/20 [==>...........................] - ETA: 10s - loss: 1.6055 - accuracy: 0.2969 3/20 [===>..........................] - ETA: 10s - loss: 1.6015 - accuracy: 0.3281 4/20 [=====>........................] - ETA: 10s - loss: 1.5931 - accuracy: 0.3477 5/20 [======>.......................] - ETA: 10s - loss: 1.5914 - accuracy: 0.3469 6/20 [========>.....................] - ETA: 10s - loss: 1.5827 - accuracy: 0.3698 7/20 [=========>....................] - ETA: 10s - loss: 1.5785 - accuracy: 0.3884 8/20 [===========>..................] - ETA: 10s - loss: 1.5673 - accuracy: 0.4121 9/20 [============>.................] - ETA: 9s - loss: 1.5610 - accuracy: 0.414910/20 [==============>...............] - ETA: 9s - loss: 1.5457 - accuracy: 0.418711/20 [===============>..............] - ETA: 8s - loss: 1.5297 - accuracy: 0.414812/20 [=================>............] - ETA: 8s - loss: 1.5338 - accuracy: 0.412813/20 [==================>...........] - ETA: 7s - loss: 1.5214 - accuracy: 0.427914/20 [====================>.........] - ETA: 6s - loss: 1.5176 - accuracy: 0.428615/20 [=====================>........] - ETA: 5s - loss: 1.5100 - accuracy: 0.427116/20 [=======================>......] - ETA: 4s - loss: 1.5065 - accuracy: 0.425817/20 [========================>.....] - ETA: 3s - loss: 1.5021 - accuracy: 0.423718/20 [==========================>...] - ETA: 2s - loss: 1.4921 - accuracy: 0.428819/20 [===========================>..] - ETA: 1s - loss: 1.4822 - accuracy: 0.433420/20 [==============================] - ETA: 0s - loss: 1.4825 - accuracy: 0.432720/20 [==============================] - 33s 2s/step - loss: 1.4825 - accuracy: 0.4327 - val_loss: 1.4187 - val_accuracy: 0.4074
Time used: 38.565846900000004{'loss': [1.4825222492218018], 'accuracy': [0.4327155649662018],  'val_loss': [1.4187402725219727], 'val_accuracy': [0.40740740299224854]}>>>

最终预测结果如下所示:

模型预测[[36 18 37  1 18] [14 46 34  0  6] [ 8 29 73  0 10] [16 29 14 45 26] [47 15 33  0 95]]              precision    recall  f1-score   support
           0     0.2975    0.3273    0.3117       110           1     0.3358    0.4600    0.3882       100           2     0.3822    0.6083    0.4695       120           3     0.9783    0.3462    0.5114       130           4     0.6129    0.5000    0.5507       190
    accuracy                         0.4538       650   macro avg     0.5213    0.4484    0.4463       650weighted avg     0.5474    0.4538    0.4624       650
accuracy 0.45384615384615384
              precision    recall  f1-score   support
           0     0.9189    0.3864    0.5440       352           1     0.4766    0.4766    0.4766       107           2     0.0000    0.0000    0.0000         0           3     0.0000    0.0000    0.0000         0           4     0.0000    0.0000    0.0000         0
    accuracy                         0.4074       459   macro avg     0.2791    0.1726    0.2041       459weighted avg     0.8158    0.4074    0.5283       459
accuracy&nbsp;0.4074074074074074Time used: 32.2772881


2.实验结果

训练输出结果如下图所示:

模型训练Epoch 1/15
 1/20 [>.............................] - ETA: 47s - loss: 1.6123 - accuracy: 0.1875 2/20 [==>...........................] - ETA: 18s - loss: 1.6025 - accuracy: 0.2656 3/20 [===>..........................] - ETA: 18s - loss: 1.5904 - accuracy: 0.3333 4/20 [=====>........................] - ETA: 18s - loss: 1.5728 - accuracy: 0.3867 5/20 [======>.......................] - ETA: 17s - loss: 1.5639 - accuracy: 0.4094 6/20 [========>.....................] - ETA: 17s - loss: 1.5488 - accuracy: 0.4375 7/20 [=========>....................] - ETA: 16s - loss: 1.5375 - accuracy: 0.4397 8/20 [===========>..................] - ETA: 16s - loss: 1.5232 - accuracy: 0.4434 9/20 [============>.................] - ETA: 15s - loss: 1.5102 - accuracy: 0.435810/20 [==============>...............] - ETA: 14s - loss: 1.5014 - accuracy: 0.425011/20 [===============>..............] - ETA: 13s - loss: 1.5053 - accuracy: 0.423312/20 [=================>............] - ETA: 12s - loss: 1.5022 - accuracy: 0.423213/20 [==================>...........] - ETA: 11s - loss: 1.4913 - accuracy: 0.427914/20 [====================>.........] - ETA: 9s - loss: 1.4912 - accuracy: 0.4286 15/20 [=====================>........] - ETA: 8s - loss: 1.4841 - accuracy: 0.436516/20 [=======================>......] - ETA: 7s - loss: 1.4720 - accuracy: 0.440417/20 [========================>.....] - ETA: 5s - loss: 1.4669 - accuracy: 0.437518/20 [==========================>...] - ETA: 3s - loss: 1.4636 - accuracy: 0.434919/20 [===========================>..] - ETA: 1s - loss: 1.4544 - accuracy: 0.438320/20 [==============================] - ETA: 0s - loss: 1.4509 - accuracy: 0.440020/20 [==============================] - 44s 2s/step - loss: 1.4509 - accuracy: 0.4400 - val_loss: 1.3812 - val_accuracy: 0.3660
Time used: 49.7057119{'loss': [1.4508591890335083], 'accuracy': [0.4399677813053131],  'val_loss': [1.381193995475769], 'val_accuracy': [0.3660130798816681]}

最终预测结果如下所示:

模型预测[[ 30   8   9  17  46] [ 13  50   9  13  15] [ 10   4  58  29  19] [ 11   8   8  73  30] [ 25   3  23  14 125]]              precision    recall  f1-score   support
           0     0.3371    0.2727    0.3015       110           1     0.6849    0.5000    0.5780       100           2     0.5421    0.4833    0.5110       120           3     0.5000    0.5615    0.5290       130           4     0.5319    0.6579    0.5882       190
    accuracy                         0.5169       650   macro avg     0.5192    0.4951    0.5016       650weighted avg     0.5180    0.5169    0.5120       650
accuracy 0.5169230769230769
              precision    recall  f1-score   support
           0     0.8960    0.3182    0.4696       352           1     0.7273    0.5234    0.6087       107           2     0.0000    0.0000    0.0000         0           3     0.0000    0.0000    0.0000         0           4     0.0000    0.0000    0.0000         0
    accuracy                         0.3660       459   macro avg     0.3247    0.1683    0.2157       459weighted avg     0.8567    0.3660    0.5020       459
accuracy&nbsp;0.3660130718954248Time used: 60.106339399999996


2.实验结果

训练输出结果如下图所示:

模型训练Epoch 1/15
 1/10 [==>...........................] - ETA: 18s - loss: 1.6074 - accuracy: 0.2188 2/10 [=====>........................] - ETA: 2s - loss: 1.5996 - accuracy: 0.2383  3/10 [========>.....................] - ETA: 2s - loss: 1.5903 - accuracy: 0.2500 4/10 [===========>..................] - ETA: 2s - loss: 1.5665 - accuracy: 0.2793 5/10 [==============>...............] - ETA: 2s - loss: 1.5552 - accuracy: 0.2750 6/10 [=================>............] - ETA: 1s - loss: 1.5346 - accuracy: 0.2930 7/10 [====================>.........] - ETA: 1s - loss: 1.5229 - accuracy: 0.3103 8/10 [=======================>......] - ETA: 1s - loss: 1.5208 - accuracy: 0.3135 9/10 [==========================>...] - ETA: 0s - loss: 1.5132 - accuracy: 0.328110/10 [==============================] - ETA: 0s - loss: 1.5046 - accuracy: 0.340010/10 [==============================] - 9s 728ms/step - loss: 1.5046 - accuracy: 0.3400 - val_loss: 1.4659 - val_accuracy: 0.5599
Time used: 13.8141568{'loss': [1.5045626163482666], 'accuracy': [0.34004834294319153],  'val_loss': [1.4658586978912354], 'val_accuracy': [0.5599128603935242]}

最终预测结果如下所示:

模型预测[[ 56  13   1   0  40] [ 31  53   0   0  16] [ 54  47   3   1  15] [ 27  14   1  51  37] [ 39  16   8   2 125]]              precision    recall  f1-score   support
           0     0.2705    0.5091    0.3533       110           1     0.3706    0.5300    0.4362       100           2     0.2308    0.0250    0.0451       120           3     0.9444    0.3923    0.5543       130           4     0.5365    0.6579    0.5910       190
    accuracy                         0.4431       650   macro avg     0.4706    0.4229    0.3960       650weighted avg     0.4911    0.4431    0.4189       650
accuracy 0.4430769230769231
havior.              precision    recall  f1-score   support
           0     0.8571    0.5625    0.6792       352           1     0.6344    0.5514    0.5900       107           2     0.0000    0.0000    0.0000         0           4     0.0000    0.0000    0.0000         0
    accuracy                         0.5599       459   macro avg     0.3729    0.2785    0.3173       459weighted avg     0.8052    0.5599    0.6584       459
accuracy 0.5599128540305011Time&nbsp;used:&nbsp;23.0178675


六.总结

写到这里这篇文章就结束,希望对您有所帮助。忙碌的五月、六月,真的很忙,项目本子论文毕业,等忙完后好好写几篇安全博客,感谢支持和陪伴,尤其是家人的鼓励和支持, 继续加油!

  • 一.恶意软件分析 1.静态特征 2.动态特征
  • 二.基于CNN的恶意家族检测 1.数据集 2.模型构建 3.实验结果
  • 三.基于BiLSTM的恶意家族检测 1.模型构建 2.实验结果
  • 四.基于BiGRU的恶意家族检测 1.模型构建 2.实验结果
  • 五.基于CNN+BiLSTM和注意力的恶意家族检测 1.模型构建 2.实验结果

作者提问如下,欢迎大家补充:

  • 恶意软件或二进制常见的特征包括哪些?各自有哪些优缺点。
  • 恶意软件转灰度图是常见的家族分类方法,它与本文提出的方法的优缺点是什么?
  • 如何提取恶意软件CFG和ICFG呢?提取后又如何被机器学习模型学习?
  • 常见的向量表征方法有哪些,各自有哪些特点?您能否实现Word2Vec的代码呢?
  • 机器学习和深度学习的联系及区别是什么?如果构建深度学习模型学习API序列,其恶意家族检测效果如何?
  • 恶意软件家族分类或恶意代码检测发展到如今现状如何?工业界和学术界各种有哪些特点及局限,如何更好地关联来促进领域发展?
  • 二进制方向是否还有更好的创新或突破性方法?其鲁棒性、语义增强、可解释性如何提升。
  • 如何实现未知家族的恶意软件检测,又如何实现高威胁恶意软件的溯源呢?
  • 恶意软件检测如何更好地和底层硬件及编译器融合?以及如何对抗变种、混淆及对抗。
  • 恶意软件检测能通过chatGPT技术快速生成变种吗?又如何对抗该技术的发展。

三月应该是今年最忙碌的一个月了,好多事情。希望一切顺利,更希望四月后能沉下心来读论文和写论文。然而四月、五月同样忙碌,继续加油,只争朝夕,娜璋白首。

感谢大家的支持和关注。继续加油!感恩,娜璋白首。

(By:Eastmount 2023-06-27 夜于火星)


参考文章如下,感谢这些大佬。

  • [1] https://github.com/cuckoosandbox/cuckoo
  • [2] https://github.com/kevoreilly/CAPEv2
  • [3] https://capesandbox.com
  • [4] https://capev2.readthedocs.io/en/latest/
  • [5] https://capev2.readthedocs.io/en/latest/usage/submit.html
  • [6] Cuckoo变种-CAPE简介 – Threathunter

前文回顾(下面的超链接可以点击喔):

  • [系统安全] 一.什么是逆向分析、逆向分析应用及经典扫雷游戏逆向
  • [系统安全] 二.如何学好逆向分析及吕布传游戏逆向案例
  • [系统安全] 三.IDA Pro反汇编工具初识及逆向工程解密实战
  • [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向破解
  • [系统安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏
  • [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制
  • [系统安全] 七.逆向分析之PE病毒原理、C++实现文件加解密及OllyDbg逆向
  • [系统安全] 八.Windows漏洞利用之CVE-2019-0708复现及蓝屏攻击
  • [系统安全] 九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度提权
  • [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现
  • [系统安全] 十一.那些年的熊猫烧香及PE病毒行为机理分析
  • [系统安全] 十二.熊猫烧香病毒IDA和OD逆向分析(上)病毒初始化
  • [系统安全] 十三.熊猫烧香病毒IDA和OD逆向分析(中)病毒释放机理
  • [系统安全] 十四.熊猫烧香病毒IDA和OD逆向分析(下)病毒感染配置
  • [系统安全] 十五.Chrome密码保存功能渗透解析、Chrome蓝屏漏洞及音乐软件漏洞复现
  • [系统安全] 十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)
  • [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
  • [系统安全] 十八.病毒攻防机理及WinRAR恶意劫持漏洞(bat病毒、自启动、蓝屏攻击)
  • [系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析
  • [系统安全] 二十.PE数字签名之(上)什么是数字签名及Signtool签名工具详解
  • [系统安全] 二十一.PE数字签名之(中)Signcode、PEView、010Editor、Asn1View工具用法
  • [系统安全] 二十二.PE数字签名之(下)微软证书漏洞CVE-2020-0601复现及Windows验证机制分析
  • [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
  • [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
  • [系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
  • [系统安全] 二十六.WannaCry勒索病毒分析 (2)MS17-010漏洞利用及解析
  • [系统安全] 二十七.WannaCry勒索病毒分析 (3)蠕虫传播机制分析及IDA和OD逆向
  • [系统安全] 二十八.CS逆向分析 (1)你的游戏子弹用完了吗?Cheat Engine工具入门
  • [系统安全] 二十九.外部威胁防护和勒索病毒对抗(深信服视频学习)
  • [系统安全] 三十.WannaCry勒索病毒分析 (4)全网“最“详细的蠕虫传播机制解读
  • [系统安全] 三十一.恶意代码检测(1)恶意代码攻击溯源及恶意样本分析
  • [系统安全] 三十二.恶意代码检测(2)常用技术万字详解及总结
  • [系统安全] 三十三.恶意代码检测(3)基于机器学习的恶意代码检测技术
  • [系统安全] 三十四.恶意代码检测(4)编写代码自动提取IAT表、字符串及时间戳
  • [系统安全] 三十五.Procmon工具基本用法及文件进程、注册表查看
  • [系统安全] 三十六.学术分享之基于溯源图的APT攻击检测安全顶会论文总结
  • [系统安全] 三十七.Metasploit技术之基础用法万字详解及防御机理
  • [系统安全] 三十八.Metasploit后渗透技术信息收集、权限提权和功能模块详解及防护建议
  • [系统安全] 三十九.恶意代码同源分析及BinDiff软件基础用法
  • [系统安全] 四十.Powershell恶意代码检测系列 (1)Powershell基础入门及管道和变量的用法
  • [系统安全] 四十一.Powershell恶意代码检测系列 (2)Powershell基础语法和注册表操作
  • [系统安全] 四十二.Powershell恶意代码检测系列 (3)PowerSploit脚本渗透详解
  • [系统安全] 四十三.Powershell恶意代码检测系列 (4)论文总结及抽象语法树(AST)提取
  • [系统安全] 四十四.恶意软件分析 (1)静态分析Capa经典工具的基本用法万字详解
  • [系统安全] 四十五.恶意软件分析 (2)静态分析Capa经典工具批量提取静态特征和ATT&CK技战术
  • [系统安全] 四十六.恶意软件分析 (3)动态分析经典沙箱Cape的安装和基础用法详解
  • [系统安全] 四十七.恶意软件分析 (4)Cape沙箱批量提取动态API特征
  • [系统安全] 四十八.恶意软件分析 (5)Cape沙箱分析结果Report报告的API序列批量提取详解
  • [系统安全] 四十九.恶意家族分类 (1)基于API序列和机器学习的恶意家族分类实例详解
  • [系统安全] 五十.恶意家族分类 (2)基于API序列和深度学习的恶意家族分类实例详解

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:娜璋AI安全之家 eastmount eastmount《[系统安全] 五十.恶意家族分类 (2)基于API序列和深度学习的恶意家族分类实例详解》

评论:0   参与:  0