PowerLZY's Blog

本博客主要用于记录个人学习笔记(测试阶段)

一、关联规则概述

关联规则-策略挖掘中必不可少的算法。

1993年,Agrawal等人在首先提出关联规则概念,迄今已经差不多30年了,在各种算法层出不穷的今天,这算得上是老古董了,比很多人的年纪还大,往往是数据挖掘的入门算法,但深入研究的不多,尤其在风控领域,有着极其重要的应用潜力,是一个被低估的算法。

阅读全文 »

一、Apriori算法

Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。

  • 支持度:关联规则A->B的支持度support=P(AB),指的是事件A和事件B同时发生的概率;

  • 置信度:指的是发生事件A的基础上发生事件B的概率;

  • 频繁k项集:频繁项集表示的就是在数据集中频繁出现的项集(可以是一个,也可以是多个)。如果事件A中包含k个元素,那么称这个事件A为k项集,并且事件A满足最小支持度阈值的事件称为频繁k项集;

阅读全文 »

API安全

一、背景简介

1.1 API

应用程序编程接口(API)是一组允许软件组件进行交互的协议。中间接口通常用于简化开发,使软件团队能够重复使用代码。API还通过将应用程序与它们所运行的基础设施脱钩来抽象系统之间的功能。尽管API在现代商业中的好处和用例不断增加,但固有的安全挑战带来了各种安全风险。

1.2 API安全

一个API代表了一组服务,允许一个程序与另一个外部或内部程序进行通信。当我们谈论API安全时,我们通常指的是保护应用程序的后端服务,包括其数据库、用户管理系统或其他与数据存储交互的组件。API安全包括采用多种工具和做法来保护技术栈的完整性。一个强大的安全的API包括一个组织使用的API和使用这些API的服务。这包括防止恶意行为者访问敏感信息或代表你采取你不希望他们执行的行动。

不幸的是,虽然API是现代应用程序的一个重要组成部分,但它们是攻击者访问敏感信息的一个常见目标。在使用API时,了解第三方应用程序如何通过接口输送数据是至关重要的。此外,随着API日益成为一个攻击载体,API安全措施有助于安全团队评估安全风险,并有一个全面的计划来保护它们。

由于API是公开访问的,它们是窃取敏感信息的常见目标,包括应用逻辑、用户凭证、信用卡号码等。此外,API端点的漏洞也会被恶意行为者利用,以获得对系统或网络的未授权访问,进行其他形式的攻击,如跨站脚本和代码注入。在线网络应用安全项目(OWASP)发布了基于风险的十大漏洞建议,以确保网络API的安全。这些包括:

1.3 最常见的API安全风险

OWASP API安全 top 10 2032变化解读
  • https://github.com/OWASP/API-Security
  • https://owasp.org/www-project-api-security/

在开发过程中以及每当API更新时,应解决以下API安全风险:

  • 破坏对象级授权。当请求可以访问或修改请求者不应该访问的数据时,例如能够通过篡改请求中的标识符访问另一个用户的帐户,就会发生BOLA。
  • 破坏函数级授权。当没有实现最小权限原则(POLP)时就会出现这种情况,通常是由于过于复杂的访问控制策略造成的。它导致攻击者能够执行敏感命令或访问针对特权帐户的端点。
  • 用户身份验证失败。与BOLA一样,如果身份验证过程被破坏,攻击者可以一次性甚至永久地冒充另一个用户。
  • 过多的数据暴露。API对请求的响应通常返回比相关或必要的数据更多的数据。尽管数据可能不会显示给用户,但可以很容易地检查这些数据,并可能导致敏感信息的潜在暴露。
  • 资产管理不当。API的开发和部署通常是快节奏的,在急于发布新的或更新的API时,经常会遗漏完整的文档。这将导致暴露的和幽灵端点,以及对旧api如何工作和需要实现的理解不足。
  • 缺乏资源和速率限制。API端点通常对互联网开放,如果对请求的数量或大小没有限制,则对DoS和暴力攻击开放。
  • 注入缺陷。如果没有正确地解析和验证请求数据,攻击者可能会发起命令或SQL注入攻击来访问它或在未经授权的情况下执行恶意命令。
  • 大规模作业。软件开发框架经常证明,只需一行代码就可以将从在线表单接收到的所有数据插入到数据库或对象中,这被称为批量赋值,从而无需编写重复的表单映射代码。如果没有指定哪些数据是可接受的,就会打开各种攻击向量。

二、技术现状

API 安全性最佳实践

参考文献

Salt Security API安全最佳实践

在多数情况下,专门部署的API安全工具可以更容易、更自动化解决API安全问题。此类平台在整个API生命周期中支持一系列功能,并为组织的API业务逻辑提供必要的上下文以阻止攻击和数据暴露。

这份API安全最佳实践将帮助企业弥补API安全策略中的差距,以下是关于如何确定问题范围和活动优先顺序的一些建议:

  • 测试API安全性同时,还需要API运行时捕获未经过标准构建更改的API和测试工具不能发现的API。
  • 确保覆盖所有环境和软件供应链,而不仅仅是由API网关或API管理平台管理的API。
  • 如果您不采取API防护措施,可以将重点放在API运行时防护上,将其作为“止血”措施、减缓攻击者的速度并为应用程序和API团队争取时间的一种方式。

以下内容翻译来至:SaltSecurity Checklist-API_Security_Best_Practices

阅读全文 »

PoweLZY’s Blog

  • 比赛相关整理

  • 好论文整理

  • 公司整理的可开源笔记

分类目录

一、[工程]

  • 大数据处理
    • 高维向量相似度匹配
    • Spark 基础
  • 计算机基础
    • 计算机网络
    • 数据库
    • 操作系统
  • 【开源工具】2.0
    • 网络安全
      • 【沙箱】
      • 【zeek】
    • 深度学习
      • 【Pytorch框架】
    • 画图
      • 【network】
      • 【matplotlib】
  • 数据结构
  • 流畅的Python

二、算法

  • 机器学习
  • 特征工程
  • 模型部署
  • [深度学习]
    • CNN
    • RNN
      • RNN
      • LSTM
      • GRU
    • Seq2Seq
      • Attention
      • Transformer
      • AutoEncoder
    • GNN
    • NLP
    • 模型训练
    • 优化算法

三、[应用]

  • 算法应用
    • 网络安全
      • 【身份认证】
      • 恶意软件检测【tags:对论文,开源项目,比赛WP等总结性整理】
      • 恶意加密流量检测
      • 【恶意域名识别】
      • 【智能安全运维】
        • 【TODO】:《信息安全技术-网络安全态势感知通用技术要求》:https://mp.weixin.qq.com/s/Cla3XmPIVaCBKIVNU-TAFQ
      • 【威胁情报】
      • 高级威胁检测
    • 业务安全
      • 业务安全常用算法归纳
      • 风控算法基础
      • 【接口安全-waap】
    • 【AI安全】
  • 工业落地:企业公开发表的论文或白皮书
    • 网络安全
      • 恶意软件检测
    • 业务安全
      • 【补充WAAP产品白皮书】
  • 算法比赛:算法比赛的top方案
    • 网络安全
      • 【360 BDCI】:https://github.com/PowerLZY/malware_classification_bdci
      • 【2021 Datacon】:
      • 【2020 Datacon】:
    • 业务安全
  • 学术前沿:学术论文
    • 网络安全
      • 恶意软件检测
      • 恶意加密流量检测
      • 【AI安全】
    • 业务安全

四、随笔

  • 面试准备
  • 面试汇总
  • 面试必看-ML整理
  • 面试必看-DL整理
  • 安全算法工程师的自我修养
    • 风控心得
    • 内容安全心得

UFA-在注册环节识别虚假账户的无监督检测算法

2021 KDD 论文Unveiling Fake Accounts at the Time of Registration: An Unsupervised Approach

  • https://dl.acm.org/doi/10.1145/3447548.3467094

小伍哥聊风控:https://mp.weixin.qq.com/s/PE4OSByfngPEJOW8UWVkMw

引言

今天分享一篇腾讯的论文,是一篇非常偏工程化的文章,其中也有很多技术的创新,但是工程上的一些实践感觉还是非常有价值的, 其实在风控业务中,业务的抽象和提取方法,可能远大于算法本身,特别是图学习领域,一个垃圾的图,算法学的越准,错的越离谱。

阅读全文 »

Blog 修改

  • Fluid 主题很好看:https://lizhening.github.io/links/
  • NEXT 主题学习
    • https://cs-cshi.github.io/
    • https://benn314.github.io/2022/11/22/Hexo-Next%E4%B8%BB%E9%A2%98%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B/
  • 整个blog目录,git私有化管理
  • 图片显示:阿里云OSS or 七牛云 or sm.sm +Gopic图床管理
  • 有的短知乎链接改了;mathpix 重新绘制
  • mathpix 公式编辑?淘宝33元5000次
  • Post自动编号,显示章节?:https://blog.csdn.net/Passerby_Wang/article/details/121342829
  • Hexo表格对齐:https://javahikers.github.io/2019/06/15/hexo-inserts-tables-in-a-variety-of-ways/
  • Hexo功能增强插件:https://segmentfault.com/a/1190000018402194
  • 优化博客路径:npm install hexo-abbrlink --save:https://github.com/rozbo/hexo-abbrlink
  • HEXO优化:https://zhuanlan.zhihu.com/p/30836436
    • 添加 tags,
阅读全文 »

SliceLine: Fast, Linear-Algebra-based Slice Finding for ML Model Debugging (SIGMOD ’21)

  • 论文下载:https://mboehm7.github.io/resources/sigmod2021b_sliceline.pdf

摘要

切片查找——最近一项关于调试机器学习(ML)模型的工作旨在查找前K个数据切片(例如,谓词的连接词,如性别女性和博士学位),其中经过训练的模型的表现明显不如整个训练/测试数据。这些切片可以用于为有问题的子集获取更多数据、添加规则或以其他方式改进模型。与决策树相比,一般的切片查找问题允许重叠的切片。由此产生的搜索空间是巨大的,因为它涵盖了特征的所有子集及其不同的值。因此,现有的工作主要依赖于启发式,并专注于适合单个节点内存的小型数据集。在本文中,我们从算法和系统的角度,以整体的方式解决了切片查找的这些可扩展性限制。我们利用切片大小、错误和结果分数的单调性财产来促进有效的修剪。此外,我们提出了一种优雅的基于线性代数的枚举算法,它允许在现有ML系统的基础上进行快速枚举和自动并行化。对不同真实世界回归和分类数据集的实验表明,有效的修剪和高效的稀疏线性代数使精确枚举变得可行,即使对于具有许多特征、相关性和数据大小超过单节点内存的数据集也是如此。

一、说明

机器学习(ML)和数据驱动的应用程序从根本上改变了IT格局的许多方面,从面向用户的应用程序到后端决策系统,再到软件和硬件堆栈的优化[21,36,56]。开发和部署用于生产的ML管道过程中的关键步骤是数据验证(分析输入数据特征)[56,59]和模型调试(分析有效的ML模型特征)[22,56,60]。需要考虑的方面包括数据误差(如异质性、人为误差、测量误差)、缺乏模型泛化(如过拟合、不平衡、域外预测)以及系统偏差和缺乏公平性。缺乏模型验证和调试可能会导致无声但严重的问题[56]。例如,种族偏见的监狱风险评估[6]、基于积雪的狼检测[58]和基于图像水印的马检测[38]。模型调试旨在识别此类问题。

模型调试技术:除了基本数据调试和验证[56,59]、服务期间的模型准确性监测和比较[56,60],以及通过混淆矩阵进行手动模型误差分析(例如,正确标签与预测标签的矩阵可视化)外,还存在几种先进的模型调试技术。计算机视觉领域的例子有显著性图[30,63,70]、逐层相关性传播[8,38]和基于遮挡的解释[75],它们都旨在找到对预测有重大影响的输入图像区域。数据管理界最近通过利用这种计算中固有的重叠,为基于遮挡的解释贡献了有效的增量计算方法[47,48]。然而,对于具有连续和分类特征的结构化数据和预测任务,文献相对较少。现有的工作包括解释表[25](主要关注数据摘要)和切片查找器[18,19],其目的是查找前K个数据切片(例如,谓词的连接词,如性别女性和博士学位),其中训练的模型的表现明显不如整个数据集。找到这样的有问题的切片对于理解缺乏训练数据或模型偏差非常有用,但也可以作为改进模型的途径

Neurlux: Dynamic Malware Analysis Without Feature Engineering

  • 论文:https://dl.acm.org/doi/10.1145/3359789.3359835#:~:text=Neurlux%20does%20not%20rely%20on%20any%20feature%20engineering%2C,report%20is%20from%20a%20malicious%20binary%20or%20not.
  • 项目:https://github.com/ucsb-seclab/Neurlux

摘要

恶意软件检测在计算机安全中起着至关重要的作用。现代机器学习方法一直以提取恶意特征的领域知识为中心。然而,可以使用许多潜在的功能,手动识别最佳功能既耗时又困难,特别是考虑到恶意软件的多样性。在本文中,我们提出了Neurlux,一种用于恶意软件检测的神经网络。Neurlux不依赖任何特征工程,而是从详细描述行为信息的动态分析报告中自动学习。我们的模型借鉴了文档分类领域的思想,使用报告中的单词序列来预测报告是否来自恶意二进制文件。我们调查了我们模型的学习特征,并显示了它倾向于给予报告的哪些组成部分最高的重要性。然后,我们在两种不同的数据集和报告格式上评估了我们的方法,表明Neurlux改进了现有技术,可以有效地从动态分析报告中学习。此外,我们还表明,我们的方法可移植到其他恶意软件分析环境,并可推广到不同的数据集。

说明

随着恶意软件变得越来越复杂,恶意软件分析也需要不断发展。传统上,大多数反恶意软件使用基于签名的检测,将可执行文件与已知恶意软件签名列表进行交叉引用。然而,这种方法有局限性,因为对恶意软件的任何更改都可能更改签名,因此同一恶意软件的新版本通常可以通过加密、混淆、打包或重新编译原始样本来逃避基于签名的检测。VirusTotal报告称,每天分析超过68万个新样本[40],其中可能有相当多的样本只是之前看到的样本的重新打包版本,正如Brosch等人[3]观察到的那样。超过50%的新恶意软件只是现有恶意软件的重新打包版本。

近年来,由于需要将技术推广到以前看不见的恶意软件样本,因此产生了利用机器学习技术的检测方法[25,26,38]。恶意软件分析可以大致分为两类:代码(静态)分析和行为(动态)分析。静态分析和动态分析都有其优点和缺点。尽管动态分析提供了可执行行为的清晰画面,但它在实践中面临着一些问题。例如,对不可信代码的动态分析需要一个复制目标主机的虚拟机,这需要大量的计算资源。此外,恶意软件可能不会表现出其恶意行为,或者虚拟化环境可能不会反映恶意软件所针对的环境[5,15,27,30]。为了避免这些限制,一些相关工作仅依赖于从静态分析中提取的特征来实现对大量恶意软件样本的快速检测。然而,可以采用各种加密和混淆技术来阻碍静态分析[19,24]。这对静态恶意软件检测器来说是一个更严重的问题,因为包装在今天的良性样本中也被广泛使用。样本[28]。尽管动态分析被证明容易受到规避技术的影响,但运行时行为很难混淆。动态分析二进制文件可以解包并记录其与操作系统的交互,这是恶意软件分析的一个有吸引力的选择。

无论使用静态分析还是动态分析,大多数基于机器学习的恶意软件检测器都严重依赖于相关的领域知识[12,13,34]。这些方法通常依赖于恶意软件专家手动调查的功能,这需要大量的功能工程。例如,Kolbitsch等人[13]捕获了PE可执行程序在为此目的设计的特定功能中的行为图。恶意软件不断被创建、更新和更改,这可能会使最初精心设计的功能不适用于较新的恶意软件或不同的恶意软件家族。在这种情况下,必须不断完善成本高昂的特征工程工作。因此,找到一种降低人工特征工程成本的方法来从原始数据中提取有用的信息是至关重要的。

最近有一些关于基于深度学习的恶意软件分类的工作,这不需要特征工程。然而,现有的深度学习方法并没有利用来自现有动态分析系统的信息,而是倾向于选择一种类型的动态特征[14]或使用静态特征[6]。这些解决方案遗漏了关于每个样本所采取的行动的完整信息。

在本文中,我们提出了Neurlux,这是一个使用神经网络分析动态分析报告的系统。Cuckoo[21]等服务通过在沙盒中跟踪可执行文件来提供对可执行文件的详细动态分析。此分析包含诸如网络活动、注册表更改、文件操作等信息。我们使用这些报告作为分析的基础。也就是说,给定一个动态分析报告,我们希望能够预测该报告是针对恶意软件样本还是良性可执行文件。

我们的直觉是,我们可以将这些报告视为文件。凭借这种直觉,我们提出了Neurlux,这是一种神经网络,它在不需要任何特征工程的情况下学习并操作(清洁的)动态分析报告。Neurlux借用了文档分类领域的概念,将报告视为一系列单词,这些单词构成了一系列句子,从而创建了一个有用的模型。Neurlux打算用学习这些行为伪像或启发式的神经网络来取代昂贵的手工启发式。

为了检查我们的方法是否偏向于特定的报告格式(即沙盒),我们在评估中包括了两个不同的沙盒,即杜鹃沙盒[21]、杜鹃沙盒和一个商业反恶意软件供应商的沙盒(我们将其称为VendorSandbox)。此外,我们使用了两个不同的数据集,一个由商业反恶意软件供应商VendorDataset提供,另一个是标记的基准数据集EMBER[2]EmberDataset。

为了证明Neurlux比特征工程方法做得更好,我们实现了三种这样的技术,并与稍后讨论的技术进行了比较。此外,我们实现并比较了由Karbab等人[11]提出的MalDy模型作为基线。MalDy将行为(动态)报告形式化为一个单词袋(BoW),其中特征是报告中的单词。总之,我们做出了以下贡献:

  • 我们提出了Neurlux,这是一种利用文档分类概念来检测恶意软件的方法,该方法基于沙箱生成的行为(动态)报告,而无需进行功能工程。唯一的预处理步骤是清理报告以提取单词,在此基础上,我们的模型学习相关的单词序列,这有助于其预测。Neurlux在我们的K倍验证中显示出高准确度,达到96.8%的测试准确度。
  • 我们在动态分析报告中创建并测试了几种恶意软件分类方法,包括新方法,如集成功能的堆叠集合和功能计数模型。我们与这些方法进行了比较,表明Neurlux优于特征工程方法。
  • 我们通过在新的数据集和新的报告格式(即由新的沙盒生成)中测试Neurlux来评估其泛化能力,并表明它的泛化能力比我们评估的方法更好。
  • 可执行文件的源代码和数据集将在github上发布。