文章总结: 本文详解基于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 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 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 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 used: 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序列和深度学习的恶意家族分类实例详解》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。


![[系统安全]五十.恶意家族分类(2)基于API序列和深度学习的恶意家族分类实例详解](/images/random/titlepic/3.jpg)
![[系统安全]四十九.恶意家族分类(1)基于API序列和机器学习的恶意家族分类实例详解](/images/random/titlepic/7.jpg)
![[系统安全]五十二.DataCon竞赛(1)2020年Coremail钓鱼邮件识别及分类详解](/images/random/titlepic/12.jpg)
![[系统安全]五十八.恶意软件分析(10)利用火绒安全实现恶意样本家族批量标注(含学术探讨)](/images/random/titlepic/6.jpg)

![[系统安全]六十三.Powershell恶意代码检测系列(6)混淆和反混淆[上]](/images/random/titlepic/11.jpg)
![[系统安全]六十二.恶意软件分析(13)LLM赋能实现基于机器学习的恶意家族分类(初探)](/images/random/titlepic/1.jpg)
![[系统安全]五十四.恶意软件分析(6)PE文件解析及利用Python获取样本时间戳详解](/images/random/titlepic/9.jpg)
![[系统安全]五十五.恶意软件分析(7)IDAPython基础用法及CFG控制流图提取详解[上]](/images/random/titlepic/14.jpg)
评论