Howie's Notes

Machine Learning and Cyber Security

Burp Suite 中的 Intruder 模块里有 4 种攻击模式,分别为 Sniper、Battering ram、Pitchfork、Cluster bomb,在这里假设 Payload set1=[1, 2],Payload set2=[a, b, c, d]:

Sniper

Sniper,中文“狙击手”,每次只针对 1 个 Payload Position,使用 1 个 Payload set,示例如下:

Request Position1(default:x) Position2(default:y)
#1 1 y
#2 2 y
#3 x 1
#4 x 2

Battering ram

Battering ram,中文“攻城槌”,每次针对多个 Payload Position,使用 1 个 Payload set,示例如下:

Request Position1 Position2
#1 1 1
#2 2 2

Pitchfork

Pitchfork,中文“杈子”,每次针对多个 Payload Position,使用多个 Payload set,最多支持 5 个列表,也即 5 个位置,采用平行模式,请求次数以最小列表项为准,示例如下:

Request Position1 Position2
#1 1 a
#2 2 b

Cluster bomb

Cluster bomb,中文“集束炸弹”,每次针对多个 Payload Position,使用多个 Payload set,最多支持 5 个列表,也即 5 个位置,采用交叉模式,请求次数为各列表项之积,示例如下:

Request Position1 Position2
#1 1 a
#2 1 b
#3 1 c
#4 1 d
#5 2 a
#6 2 b
#7 2 c
#8 2 d

URI,全称"Uniform Resource Identifier",中文“统一资源标志符”,是一个用于标识某一互联网资源名称的字符串。URI 的最常见的形式是统一资源定位符(URL),经常指定为非正式的网址。更罕见的用法是统一资源名称(URN),其目的是通过提供一种途径,用于在特定的名字空间资源的标识,以补充网址。

URL,全称"Uniform Resource Locator",中文“统一资源定位符”,URL 是 URI 的子集。例如 https://howiezhao.github.io/2018/04/29/url-uri/
这个 URL 唯一标识了互联网中一台服务器上的一篇文章(即本篇文章)。URL 的格式一般为 scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

URN,全称"Uniform Resource Name",中文“统一资源名称”,是另一种形式的 URI,它通过特定命名空间中的唯一名称来标识资源。例如 urn:isbn:9780141036144 这个 URN 唯一标识了乔治·奥威尔所著的《1984》。

简单说,URL 代表一个人的位置,URN 代表一个人的身份证号,通过 URL 和 URN 都可以唯一的找到这个人,所以它们都属于 URI。

PoC,全称“Proof of Concept”,中文“概念验证”,常指一段漏洞证明的代码。

Exp,全称“Exploit”,中文“利用”,指利用系统漏洞进行攻击的动作。

Payload,中文“有效载荷”,指成功 exploit 之后,真正在目标系统执行的代码或指令。

Shellcode,简单翻译“shell 代码”,是 Payload 的一种,由于其建立正向/反向 shell 而得名。

Read more »

简单来说,/etc/passwd 存储一般的用户信息,任何人都可以访问;/etc/shadow 存储用户的密码信息,只有 root 用户可以访问。下面来详细介绍:

/etc/passwd

早期的 Linux 中,用户的密码也存储在此文件中,但因为此文件所有人都可以访问,对密码的存储不安全,但又不能把它的权限改为仅 root 用户,因为系统的其他程序可能会用到此文件中存储的用户其他信息,所以,后来 Linux 将用户密码存储到了 /etc/shadow 文件中,并将其权限设为仅 root 用户。

在渗透过程中,这两个文件最好都检查。

/etc/passwd 的文件格式为:用户名:密码:用户 ID:用户组 ID:注释:用户目录:登录 shell,共 7 项,默认情况下,root 的用户 ID 为 0,1-99 表示预定义用户,100-999 表示其他系统帐户,新建的其他用户 ID 从 1000 起,用户组 ID 代表的详细信息存储在 /etc/group 文件中,如果密码被存储在了 /etc/shadow 文件中,则此文件中密码项为 x,常见形式如下:

1
root:x:0:0:root:/root:/bin/bash

/etc/shadow

/etc/shadow 的文件格式为:用户名:密码:上次修改密码日期(从 1970 年 1 月 1 日起的天数):密码在两次修改期间的最小天数(0 表示可在任何时间修改):密码需要被变更的天数(99999 表示不需要变更):密码变更前提前几天警告:账号失效日期:账号失效后被禁用的天数:保留字段,共 9 项,如果密码项以 !* 起始,则代表此账号被锁定,不能用于登录,密码项中更为详细的格式为:$加密方法 ID$Salt$加密值,常见形式如下:

1
root:$6$Fsf6Q6SH$MlagWih0lcGFxtAo7/s8Z5.wywJyCqH6qateZ6yPFOPm8bNYTGAEPygZxSOPR1A9Rtw.WxJp2fNMOoeB1wj890:17524:0:99999:7:::

在 Kali Rolling 2017 中打开 BeEF 然后自动跳转到登录页面,会发现只有 BeEF 的图标而没有登录框,无法进行登录,经查是因为和 Metasploit 的集成有关的,解决方案如下:

/usr/share/beef-xss/extensions/admin_ui/api/handler.rb 文件中第 22 行的

1
minified = Uglifier.compile(evaluated)

改为

1
minified = evaluated

保存并重启 BeEF 即可。

一:定位

蒙特卡罗定位是感知和运动的循环,每次感知都会获得信息,每次运动都会丢失信息,感知函数利用了贝叶斯规则,运动函数利用了全概率定理。

基于一维的蒙特卡罗定位程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
p = [0, 1, 0, 0, 0)
world = ['green', 'red', 'red', 'green', 'green']
measurements = ['red', 'green']
motions = [1, 1]
pHit = 0.6
pMiss = 0.2
pExact = 0.8
pOvershoot = 0.1
pUndershoot = 0.1


def sense(p, Z):
q = []
for i in range(len(p)):
hit = (Z == world[i])
q.append(p[i] * (hit * pHit + (1-hit) * pMiss))
s = sum(q)
for i in range(len(p)):
q[i] = q[i]/s
return q


def move(p, U):
q = []
for i in range(len(p)):
s = pExact * p[(i-U) % len(p)]
s = s + pOvershoot * p[(i-U-1) % len(p)]
s = s + pUndershoot * p[(i-U+1) % len(p)]
q.append(s)
return q


for k in range(len(measurements)):
p = sense(p, measurements[k])
p = move(p, motions[k])
print p

本文翻译自 https://artkond.com/2017/03/23/pivoting-guide/ ,正文如下:


渗透测试人员经常通过逻辑网络边界来访问客户的关键基础设施。常见的情况包括在成功的外围攻破之后,将攻击发展到内部网络,或者在危及组织内的主机之后访问初始的不可路由的网段。跳板是 red team/pentest 参与过程中使用的一系列技术,它们利用攻击者控制的主机作为逻辑网络进行跳跃,旨在扩大网络可视性。在这篇文章中,我将介绍常用的跳板技术和可用的工具。

Read more »

  1. 人的因素是安全过程中最薄弱的环节。
  2. 你只要说你是一个写书的或者写电影剧本的,每个人都会对你开绿灯。
  3. 把重要的问题掺杂在琐碎的、不合逻辑的问题中间,这样可以给人一种可信的感觉。
  4. 不要在得到关键信息后马上结束谈话。再问两三个问题,闲聊几句,然后才说再见。以后,如果受害者记起你曾经问过什么,则极有可能是最后几个问题,其他的通常都忘掉了。
  5. 两三样信息可能就足以支撑起一次成功的假冒行为 —— 社交工程师冒用别人的身份。取得职员的名字、他的电话,以及他的职员编号 —— 或许,最好也能得到其经理的名字和电话 —— 这样,即使一个半瓶子醋的社交工程师,也有了足够的信息,使自己在给下一个目标打电话时听起来非常可信。
  6. 安全培训需要强调一点:当你有疑虑时,必须确认,确认,再确认。
  7. 执法部门的人跟军队里的人一样,从接受训练的第一天起就形成了一个根深蒂固的等级观念。只要社交工程师扮作警官或中尉 —— 级别比跟他谈话的人高 —— 受害者就会拘于一条长时间得来的教训,即“不要质问比你职别高的人”。级别,换个说法,就是特权,尤其是不被级别低的人质问的特权。
  8. 每个人都应该明白社交工程师的伎俩:获得尽可能多的与目标有关的信息,再利用这些信息使人相信自己是内部人员。然后一剑封喉。
  9. 逆向社交工程学:一种社交工程攻击方式。攻击者建立起这样一个场景:让受害者遇到问题,并向攻击者寻求帮助。逆向社交工程学的另一种表现形式是以其人之道还治其人之身。攻击目标识别出自己受到了攻击,从而利用心理学原理来牵制攻击者,并且从他那里引诱出尽可能多的信息,进而有效的保护目标资产。
  10. 新员工最容易成为攻击者的目标。他们认识的人还不多,也不太清楚公司的办事程序,以及什么该做什么不该做。而且,为给人留下良好的第一印象,他们急于表现自己是多么乐于合作与反应迅捷。
  11. 第一条原则:除非万不得已,否则不要造访他们的办公室。仅凭着电话中的声音,他们是很难认出你来的,而如果他们不能人称认出你,那就不能逮捕你。

Writing superblocks and filesystem accounting information

今天在将 Kali 安装到 U 盘上时遇到了上面所示的问题,也可以翻译成“写入超级块和文件系统账户统计信息”,具体情况是当使用 mkfs.ext4 格式化加密分区时,程序运行到上面所示的地方停止不动,无论等多久都无法完成,其间还会发生 U 盘挂掉又重连上的情况,使用 dmesg 命令诊断故障时发现如下错误:

1
2
3
...
device descriptor read/8, error -110
...

经判断是因为主板无法提供给 U 盘足够的电量所导致的,因为我的 U 盘和虚拟机之间是 3.0 连接的,3.0 连接要比 2.0 连接耗电,所以将 U 盘和虚拟机之间的连接改为 2.0 即可解决这个问题。

时间问题

安装好 Kali 并启动之后,会发现 Kali 的系统时间始终无法和 Windows 的系统时间保持一致,具体表现如下:

开始时,Windows 系统时间准确,启动 Kali 之后,Kali 系统时间错误,将其更新正确之后,关闭 Kali,进入 Windows,发现 Windows 系统时间又错误。

出现这种情况的原因是 Windows 和 Linux 的时间机制不一样,具体而言,Windows 的时间就是硬件 BIOS 的时间,而 Linux 的时间则是硬件 BIOS 加上所在时区的时间。解决方法是,在 Kali 中执行如下命令:

1
sudo timedatectl set-local-rtc 1 --adjust-system-clock

有时在 Kali Linux 中获得了一个 Windows shell 或者在 meterpreter 中进入 shell 后,执行命令可能会出现中文乱码,其原因是 Windows 和 Linux 的编码不同,导致 Windows 中的中文在 Linux 中无法正常显示。

解决方法:

  1. 在 shell 窗口的工具栏选择“编辑” ——> “首选项” ——> “编码”,选中简体中文的三个编码:GB18030、GB2312、GBK,打勾并退出
  2. 接着在“终端” ——> “设定字符编码”中选择添加的三个简体中文编码之一即可

注意:

  • 这个设置会随着操作系统的重启而失效
  • 设定简体中文编码之后,Linux 中的中文字符就会乱码,因为 Linux 使用 UTF-8 编码
  • 建议只在需要的时候设定简体中文编码
0%