二进制安全 [2021]杀毒软件查杀技术 杀毒软件查杀技术 1. hash查杀: 算个hash,查查这个hash在库里面吗 2. 单特征码查杀: 随便取一段字节码,比如程序的中间,取8个字节或者32个字节,存着,如果这些字节一样,杀掉 3. 多特征码: base+偏移,比如 duck.exe+0x1337 = 0xf5ff7788 那么就是木马 4. 辅助特征码技术: pe头、字符串、导入表、pe信息等 5. 全局特征: 多半是基于局部敏感hash算法,此类误报最大,因为病毒加壳后就基本上无解了 6. 启发查杀 初级版: 提取字符串、导入表、之类的,遇到某些函数或者字符串进行加分减分操作 中级版: 指定一些pe信息,比如PE入口点前x字节,导入表导出表函数等信息,送入机器学习网络,与多分类任务无差别,玩的花的比如把整个PE当成一张图片,然后做CNN的也有,用SVM做特征的也有,目前大部分安全软件的 "启发引擎" 就是这玩意. 高级版: 中级版的信息+动态行为模式,所谓的动态行为是用CPU仿真的操作虚拟出一个系统,然后模拟跑样本(可以参考unicorn-engine),看API调用+中级版查杀脱壳后的东西 7. 后置查杀引擎 对运行后的行为链进行提取,送入机器学习的网络,根据行为启发引擎+静态启发引擎进行行为判定,此类目前被称为 "下一代杀毒引擎" 8.其他辅助查杀 云查杀,本地算个特征丢到云里面看看,毕竟本地特征库现在上万亿的病毒数量,实在是太大了太影响性能了. 评价: 阅读全文 2021-09-27 huoji 0 条评论
python系统安全工具软件汇编一线开发 [2021]余弦定理检测文件相似度 & 病毒样本基因检测 本余弦定理有如下应用场景: 1.相似度计算 2.信息推送 在网络安全领域,主要就是样本基因检测,或者叫做样本相似度计算,他的公式长这样:  请注意,之所以叫做余弦定理,是因为,他就是求一个三角形的角,并且在N维这个定理也成立  样本相似度检测,以两个风灵月影为例,属于同一个家族:  # 编码 通过pefile库,读入文件,然后逐个比对字节码,参数A为字节码相同的,参数B为字节码不同的: ```cpp def get_peinfo_by_cos(pSource,pTarget): source = pefile.PE(pSource) target = pefile.PE(pTarget) source_map,source_sizeof_code,source_base_of_code = get_pe_info(source) target_map,target_sizeof_code,target_base_of_code = get_pe_info(target) a1_dict = {} a2_dict = {} for iter in range(source_sizeof_code): v1 = iter + source_base_of_code v2 = iter + source_base_of_code + 1 if source_map[v1:v2] in a1_dict.keys(): a1_dict[source_map[v1:v2]] = a1_dict[source_map[v1:v2]] + 1 else: a1_dict[source_map[v1:v2]] = 0 for iter in range(target_sizeof_code): v1 = iter + target_base_of_code v2 = iter + target_base_of_code + 1 if target_map[v1:v2] in a2_dict.keys(): a2_dict[target_map[v1:v2]] = a2_dict[target_map[v1:v2]] + 1 else: a2_dict[target_map[v1:v2]] = 0 str1_vector=[] str2_vector=[] for key in a1_dict: str1_count = a1_dict[key] str1_vector.append(str1_count) for key in a2_dict: str2_count = a2_dict[key] str2_vector.append(str2_count) str1_map = map(lambda x: x*x,str1_vector) str2_map = map(lambda x: x*x,str2_vector) str1_mod = reduce(lambda x, y: x+y, str1_map) str2_mod = reduce(lambda x, y: x+y, str2_map) str1_mod = math.sqrt(str1_mod) str2_mod = math.sqrt(str2_mod) vector_multi = reduce(lambda x, y: x + y, map(lambda x, y: x * y, str1_vector, str2_vector)) # 计算余弦值 cos = float(vector_multi)/(str1_mod*str2_mod) return cos ``` 其中,两个是相似的,两个是不相似的,两个是恶意样本家族 来试试:  简单粗暴,并且有效. 完整代码: 阅读全文 2021-08-19 huoji 1 条评论
二进制安全 [2013]基于API依赖关系的代码相似度分析 基于API依赖关系的代码相似度分析,该文档来源于《计算机工程》2013年1期,着重解决传统系统调用依 赖图不能很好的消除API噪声,API重排等API特征混淆的问题。 阅读全文 2019-11-26 huoji 0 条评论
二进制安全 [2008]反病毒引擎设计-启发式检测技术 很好而且不错的一篇文章. [反病毒引擎设计-启发式检测技术.pdf](https://key08.com/usr/uploads/2019/11/2417547867.pdf) 阅读全文 2019-11-19 huoji 0 条评论