Howie's Notes

Machine Learning and Cyber Security

后渗透测试阶段的重要工作便是擦除痕迹,也即反取证,文件系统访问都会留下痕迹,最好的避免计算机取证的方法就是不要碰文件系统,这也是 meterpreter 的先天优势,它完全基于内存,Linux 中的反取证主要涉及 MAC 时间、日志文件、history:

MAC 时间

MAC 即 Modified/Accessed/Changed,也就是修改/访问/更改时间,修改时间指对文件内容修改时的时间,访问时间指对文件内容访问时的时间(例如通过 cat 查看时),更改时间指对文件属性、权限更改时的时间。

使用 ls -l 默认查看的是修改时间,要查看其余 2 个时间,可以加参数 ls -l --time=atime/ctime,另一个查看 MAC 时间的命令是 stat。

使用 touch -d "5 days ago" 或 touch -t 1805021030 可以修改 MAC 中的 MA 时间。meterpreter 中的 timestomp 命令可以方便的修改 MAC 时间。

Read more »

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. 第一条原则:除非万不得已,否则不要造访他们的办公室。仅凭着电话中的声音,他们是很难认出你来的,而如果他们不能人称认出你,那就不能逮捕你。
0%