夜间模式暗黑模式
字体
阴影
滤镜
圆角
21.2.8

是一个狂风的不眠夜。思维在不停的跳跃,却无法突破出某种奇怪的结界。仿佛在脑子里存…

208 日 , 2021 3:39:06
thumbnail
x64 Linux Buffer Overflow
有点忘了,整理一下64位下的缓冲区溢出。首先写一段简单的漏洞程序: #include <stdio.h> #include <unistd.h> int vuln() { char buf[80]; int r; r = read(0, buf, 400); printf("\nRead %d bytes. buf is %s\n", r, buf);…
20.12.3

渐渐地能够理解自杀者的渴求之物,以及为什么自杀的理由。

对于痛苦来说,我觉得现阶段…

1203 日 , 2020 0:25:04
20.11.20

作者首先手把手教你如何dump一个ios应用,然后告诉你其实我已经写了一个全自动…

1120 日 , 2020 16:58:38
thumbnail
论文笔记:HinCTI+方法整理
[github author="Endcat" project="apt-provenance-research"][/github] 将之前看过的一些资料中提到的方法进行整理和回顾,同时看一下这周要读的论文中的大体模型思想。 一般来说要构建溯源系统的第一步,就是要找到或者去定义如何去描述一条日志的内容和属性。最简单的,我们可以用正则匹配的方法来找到一条日志里面的状态码、时间日期、url路径等等基本信息。但是对于一般的生产环境来说,一套匹配规则只能适用于单单一种的日志格式。所以在日志的属性数据提取的过程中。往往去倾向这样的一种方法——如何拿到一条未知的字符串,提取分析出其含义和各个部分。 比如可以使用最长公共子序列算法来匹配每条日志中的相似成分,我们无需去知道相似成分的意义,因为在随后的模型训练中,都是把数据以特征向量的形式去看待的。 LCS递归方法 将日志按照一条条的特征向量聚集起来其实就是一张表,或者说矩阵比较合适。研究使用矩阵来表达的时候,发现可以使用向量分解的方法来猜测矩阵中的那些缺失的元素。这是相当关键的,更多更完整的数据对于构建模型有较大的帮助,也能发现那些日志中忽略的“潜在关系”。 矩阵分解预测缺值 到目前为止对日志的分析可以说其实停留在“欧氏空间”,因为攻击溯源的背景是在网络中分布的许许多多的节点。而节点之间的关系其实应当使用图论的知识来解决,这样更为妥当。每一条日志代表了一个日志节点,节点有它的类型区分,比如可以分为文件修改、网络请求、注册表修改等其他涵盖网络和系统的操作。这些在模型构建的过程中需要考虑要设置多少多种的节点类型,因为这些会影响到模型在分类时的效率性能。 不仅节点有它自己的属性,节点与节点之间也有不同种类的关系。比如对一个应用软件来说,它进行了一次对特定url的网络请求,那么表示软件的节点和表示url的节点之间就有访问和被访问的关系。对于文件来说也有被创建和创建者的关系、被删除或删除者的关系。这些种类的设定也与节点本身的类型相似,都是会影响到模型性能的要素。 在研究节点类型和节点间关系的过程中,社区发现算法有助于将关联度较大的节点归为一个社区。而度量一个社区内节点与节点之间的关联程度,使用到的是一个叫做模块度Q的数值。(模块度的定义可以参考百度) 通常以这样的方式来使用上面的公式:首先准备一个空的容器,不断尝试加入新的节点,如果某个加入进来的节点影响模块的程度大(最大),则将它加入进来。不断重复,直到剩下所有的节点加入都不能显著改变模块度,则就找到了一个社区,社区里的所有成员就是容器中装着的节点们。 这是社区发现最为基础的思想,它的改进版Louvain算法其实是在其基础上增加了迭代深度。这就相当于一层层的容器分类,将每次得到的社区们都看成是新的节点,然后循环往复的进行以模块度为衡量的社区发现。这么做的目的对于攻击溯源来说是有好处的,随着每一次的深入迭代,攻击事件从最初的一条条的日志逐渐抽象成为一次具体的网络访问,一次具体的扫描器运行甚至是一次具象的攻击操作。当然对于现在来说还不能确定我把这么多的节点聚集在一起,这么多的子社区聚集在一起就指认说它就是攻击节点或者有害节点。对于标签分类,是需要数据和模型训练的进一步工作。 至此,其实一个比较具象的攻击溯源系统已经展现在我们面前了。我们首先要进行对原数据的处理,对于攻击溯源来说就是日志。对于每一条日志来说,我们首先要提取出其各个特征,并且以向量的形式来将其保存成为一个多维矩阵。这个矩阵可以是基于欧式空间的,也可以是基于网络图的。就目前的研究重点来说,网络图是未来。因此不但要提取出日志的特征,还应当提取日志作为一个节点与其他日志之间的关联,这些步骤称之为数据解析和数据关联。当然,攻击溯源的最终目的是想要将这些日志归类为不同的事件,并且判别其是否具有危害性。 HERCULE其实展现了一个较为完整的攻击溯源系统的架构图,在阶段一时将原始网络日志和系统日志输入到Log Parser,由parser将日志转化为可计算的结构化的日志。在这些日志中,一部分通过tainting module打上标签用来给后面训练用,另一部分传输到第二阶段的日志关联器。实际上每个阶段使用的方法,都是仁者见仁智者见智的决策。 对于HERCULE的阶段二来说,在日志关联方面形成了一个log correlation module/connection generation/correlated log entries的闭环,不断循环迭代。这一方面也和Louvain算法上有异曲同工之妙。在阶段二中也进行了权重分配任务,这一操作也是为了优化模型训练过程中的决策函数判断,这些就都是细节部分了。 在阶段三中通过社区发现和阶段一打上标签的数据进行匹配,判定那些社区代表了哪些攻击事件,从而进行溯源的后续工作。另外根据看过的论文加上我的个人经验倾向来说,我喜欢把整个攻击溯源系统抽象为下面通用的一个架构。一方面可以在接下来看相似的论文中可以很快理清思路,另一方面或许在自己撰写溯源系统中又一个标准。…
Murmur

做一些让自己觉得没有兴趣没有希望的事情,我觉得如犯罪一般。虽然这种情况常常发生,…

1029 日 , 2020 13:17:00
thumbnail
论文笔记:Stanford Network Analysis Project
前言 这篇笔记主要探索和总结斯坦福大学在网络分析上的抽象模型、数据抽象和数据可视化相关的内容。主要参考文章为SNAP: A General-Purpose Network Analysis and Graph-Mining Library。 [github author="snap-stanford" project="snap"][/github] [github author="Endcat" project="apt-provenance-research"][/github] 分析 这个框架是我在进行APT溯源研究中一直遇到的模型架构,其实自己臆想构建的框架也无非是提取特征->抽象行为->抽象事件。SNAP注重点在于元素在事物的网络形态分布上的特征和相互关联。首先将大量的数据作为原始的数据源,辨别数据的具体类型(对应Scalar classes)。在某种程度上,将有关联的数据组成向量或哈希表的形式。这里其实论文扯了很大一部分篇幅在讲链表和哈希表这些数据结构的优缺点,无非前者就是更好的迭代,后者是更好的随机访问,然后在SNAP中将两个数据结构结合成为了更高维的网络数据模型。(对饮Composite classes) Containers是很有意思的一层。首先将网络事件抽象成图和网络的结构模型是当然的,在SNAP的网络图中,网络图是基于原始数据生成的向量组和哈希表构建而成。在数据结构上,这意味着向量组和哈希表之间也需要进行“连接”,换句话说是程序上在向量组或者哈希表上加一个指针,去指向相关联的composited data。(对应Containers) 再向上的方法层就是一般的抽象再抽象的思维了,在这里指的应该是对生成的网络图进行分析,进行抽象出行为和事件的过程。(对应Methods) 可视化 利用SNAP数据集官网,下载了facebook的ego network数据进行绘图,使用的库是matplotlib。…
thumbnail
Little Bite of iOS JailBreak
Rewind 很早以前,经常为了让自己的iPhone 6换上好看的主题,就一直等着网上越狱工具的发布。远古版本的iOS主题真的是一言难尽,随着写实风格到扁平化UI,到现在的设计风格让我觉得iOS作为用户使用来说,没啥越狱的必要了。 当我再次拿起尘封多年的iPhone 6的时候,儿时的越狱情节历历在目。所以决定再次玩玩Jailbreak。而这次,我想走得更深入一点。 Prerequisites 搭载旧版本iOS的设备一部,我使用的是iPhone 6(iOS12.3.1)PC/Mac一台 可能有人会觉得iOS逆向非Mac不可,但是仅仅是尝个鲜而已,Win未尝不可。长远来看要是深耕于此的话,在Mac的加持下会非常方便(需要某些macOS系统下的软件)。当然我觉得其实探索iOS逆向,最重要的一件事是要买得起设备。 Jailbreak 分析iOS的各种软件,越狱是第一关。越狱这个词其实就是拿到root权限的意思,并无其他深意。在以前最耳熟能详的是Pangu Team的国产越狱工具,现在去官网看看,越狱工具貌似就停留在了iPhone 6左右的那个时代。但是团队的博客仍然一直更新。这些是杂谈。现在常用的越狱工具是unc0ver,在官网下就有各个平台帮助iOS设备越狱的工具。我这里采用的是macOS下安装AltStore的越狱方式,详细记录一下过程和一些坑: 在第12步中的“Tap the "Open in AltStore" button located above.”,让我有点不太理解。想了一会才发现这句话意思是“Tap the "Open in AltStore" button…
Rewrite Plan

博客主题换来换去总有一些奇奇怪怪的错误,决定还是重写一个blog系统吧,锻炼一下…

1002 日 , 2020 15:46:28
thumbnail
JavaScript&C++ Interaction Based on V8 Engine
V8也是必须得过却不容易过的一道坎啊。 Data & Template V8中实现了JavaScript和C++之间数据和函数的相互调用。但是应当想到原生C++的数据类型和JavaScript中的数据类型还是很不一样的。这里V8相当于一个桥梁作用,提供了Value Class,在JavaScript和C++进行相互调用数据的时候就通过Value Class进行,比如说: Handle<value> Add(const Arguments&amp; args) { int a = args[0]-&gt;Uint32Value(); int b = args[1]-&gt;Uint32Value(); return Integer::New(a + b); }</value>…