社会工程–安全体系中人性的漏洞

社工社工是我一直比较感兴趣的话题。我本人对于社会工程学了解,一开始也是局限在“社工就是高质量的骗术、伪装、推理获取一切想要得到的信息的一个技术”,哈哈,我记得高中的时候盗版书书展我兴高采烈地买了很多书籍,其中买了《鬼谷子》《FBI读心术》这两系列书其实就是学习别人的经验,让我们在日常生活工作学习之中洞悉人性,而最近我也在阅读我的父亲给我推荐的我国古代优秀的著作《智囊全集》,这也是一本关于古人如何用智力解决问题的书。

“战争的胜利百分之九十取决于情报” –拿破仑·波拿巴

一切的技术我认为归根到底都是战争的需要,比如密码学的发展,比如计算机的发展,信息往往起到决定性的作用,社工这个词语我第一次接触是了解护网的时候,举个例子
红队扮演成外卖员到蓝队驻地送外卖,同时搜集一些员工信息,资产配置等,比如员工的姓名,服务器或者其他设备的一些位置可以推测拓扑结构,更有甚者偷偷把写有马的u盘插进电脑。

与社工相呼应的还有钓鱼,钓鱼邮件就是通过社工或其他方式进行信息收集之后,构造迷惑信息以及恶意链接发送给受害者,因为受害者认为邮件来源于和内容都是熟悉的,往往会放下戒备点击,很不巧的是一点就中招了,还是护网的例子,内容大概是
红队在网上发布钓鱼文档,标题类似是“关于应对红队攻击…”,大量蓝队人员点击之后中招,随后红队又发布“防止红队钓鱼通知…”结果又有一大批蓝队中招

可见社会工程学往往能达到技术达不到的效果,你可能一年都解不开别人的密码,但是你可能花100块钱就能让目标朋友偷看电脑密码后告诉你,我又想到一个好玩的例子
有一个黑客对一个公司放狠话,说1小时候瘫痪掉那个公司的电力系统。为防止攻击公司采取了很多安全措施但是1小时候果真断电了,排查许久都找不到黑客入侵破坏的方法,后来才知道公司的保安收了钱去把电闸拉了

社工讲究不择手段信息收集,高明的人利用一张图片就可以分析出目标住址。B站up主凉风就曾发过一个视频,通过一张图片和谷歌搜索引擎、谷歌地图就能推出图片的地址,与之相关的例子是国外有个女明星因为一张照片暴露了住址导致了心怀不轨的人对她进行了侵犯,所以个人信息最好不要放在网络上,因为我们传输信息的那一刻,所有的内容都会被网络监视,比如我这篇文章也被监管部门看的一清二楚,霍老板上次感慨,要不是办公需要都不想用智能机,自能手机早早就把我们的个人信息暴露掉了,我曾经丢过一台手机,吐槽有关部门办事没效率可能不会帮我找回手机了,负责人一句话让我明白了现实,他说“就连我们的信息大街上5毛一条都能找得到”所以当前的时代信息安全真的太过于重要了。

那么信息收集怎么信息收集呐,搁这搁这
互联网让我们分享自己的生活,那么我们说的每一句话,每张图片都是能被利用的信息,这是对于所有人来说。那么对于管理人员比如说信息系统的管理员,我们的真实信息都是记录在数据库的,因此出现了社工库,所以当我们上网的时候就是我们裸奔的时候了。简而言之,我们想要的一切信息都可以通过互联网搜集得到。

很多职业都是社工的高手,比如黑客,比如骗子,比如间谍,比如侦探,比如心理医生,比如销售。他们掌握各种技术,更重要的是明白它们应用的场景,古话说“见人说人话,见鬼说鬼话”

我们可以使用一些工具来收集信息:
在Linux BackTrack中的工具
Dradis:
BasKet:

消息源:
1.搜索引擎
谷歌能搜到好多我们认为已经被我们删掉的信息,《google hacking for penetration testers》,这一书听说相当有趣
一些别的暗黑引擎,比如fofa,Shodan(www.shodanhp.com)等,其中shodan提供对服务器、路由器和特定软件的搜索功能。

2.whois

3.公共服务器

4.社交媒体

5.个人网站、博客

6.公开报告

———–交流模型————

“交流模型越精巧、越清晰,花在交流上的时间就会越少” —约瑟夫·普利斯特里

社会工程学人员一般会利用语言或者非语言的暗示,改变目标的认知,从而达到想要的效果。

基本的交流规则

——-诱导——–

“不战而屈人之兵,善之善者也” –孙子


有文章指出,诱导是社工最顶层技术。所谓诱导,就是引出一个逻辑结论,它能改变别人对你的看法,最高级别的诱导将会是让目标愿意回答你的所有问题。

乐了,每次去到书店浏览不同区域总是可以看到一些成功学的书,有的书叫《说话的艺术》,社工讲究的也是说话的艺术,那么如何掌握,书中介绍三个步骤:
1.表现自然
可以录制视频观察在熟悉领域跟别人家交谈的姿态,再观察在不熟悉的领域跟别人交谈的姿态
2.拥有足够知识
必须了解与对象有关的领域之中的知识
3.切忌贪婪
过于执着结果会让目标丢失兴趣,有时世界上最佳交流者其实是听比说要多的人。

我是有感悟的,从小到大跟别人沟通交流中,能与人愉悦交流是大部分,另外一小部分则是别人本来就怀着恶意对我进行单方面输出,比如多年前跟母亲去超市购物,我正常排着队一个大妈恶狠狠对着我说我在插队,没有教养,然而当她知道我母亲在旁边之后就怂了。在愉悦的沟通里我没有一味的教别人怎么做,更多的是作为倾听者,去真正关心对方想告诉我的内容,除非是我在玩游戏的时候父母跟我讲话可能我听不进去。我的妹妹说我是比较有心计的人,因为之前我把我对于某些事情的做法解释给她听的时候,她认为我说的话,做的事都具有强烈的目的性,看来我是一个比较优秀的社工者,举一个例子说明:

我的母亲十分喜欢让我去照顾别人的孩子,逢人就说“只要你的小孩跟我小孩待一段时间,你小孩会变乖”,事实确实如此,细数这些年相处的小孩子,男孩子们很容易就会对我产生好感,崇拜。我是怎么做到的呢?耐心,我们都知道小孩子有的是精力,他们没有成熟的思维,你只有不断地回应让他们觉得他们说的话你都有在听,才会继续跟你分享。再者,我把我放在跟他们一样的高度交谈,对象是刚上幼儿园不久的小男孩,我会把我小时候的思维带进来,以他们的角度出发沟通,我在阅读《智囊全集》中看到子贡跟车夫与农夫交谈的故事,明白只有同一身份的人讲的话才能沟通,凭高出几个等级的智力压制对方,对方会拒绝交谈,这点在与我妹妹交谈中也得到了印证,她说跟我沟通就像跟同龄人一样。但是,仅仅如此还不足够,必须要具备相关领域的知识,你喜欢数学你朋友跟你聊英语,你会很快失去与他交谈的兴趣。还是对幼儿园的小孩,我蹲下身子看着他眼睛,回想我小的时候喜欢什么?那肯定还是奥特曼,这就是话题展开处,尽管我已经长大了但是我还会关注一下近几年奥特曼的更新情况,于是当我说出的与奥特曼相关的话题的时候,他们就会开始表现出对我感兴趣,而当我掌握的知识远大于他们的时候,他们就会表现出对我的崇拜,加上之前的平等对话,我便获得了亲和力。这也说明沟通需要一定的知识储备。对于第三点,不管是小孩还是大人都不喜欢被命令,我不会尝试掌控他们,更多的是引导,也可以说是诱导他们做我希望他们做的事。这一切建立在我明白上述这几点的重要性,而我认为更深层次的,其实还是我是用心再跟他们沟通,我愿意跟他们交朋友。

继续浏览书籍,我发现我和作者还是有相似之处的,我把图片截出来:

作者的经历

来跟我一起学习一下美国国土安全部手册关于诱导的一些方法:
1.唤醒他人的自我
2.表达共同的兴趣
3.故意说错
4.主动提供信息
5.假装高深
6.利用酒精影响

诱导讲究的是提问的艺术,我认为沟通时可以通过改变我们的询问方式来提高效率,打个比方,我想了解目标是否有好友使用某个产品,一般人可能会分为三次提问,1是问你认不认识那个人,2你跟那个人关系好不好,3是那个人是不是使用某个产品。这三句话可以用一句话概括,可以改为“能不能跟我说一下你的好朋友使用某个产品的感受”,这样可以通过回答来判断我们想要获取的信息。还有其他的一些提问的思路,如下:
1.开放式问题
可以从中搜集更多有用的消息,单纯能回答“是”或者“否”有可能让对话变得无聊
2.封闭式回答
有些时候需要通过询问封闭式的问题来固定证据
3.引导性问题
4.假设性问题
需要我们根据不同的场景来选择提问的方式,同时提问的时候我们要记住既不能一下子提问太多,也不要提问过少,然后就是最好一次提一个问题,让目标回答更自然。

——————成为一名伪装者———————–

“互联网上,男人是男人,女人是女人,小孩子是等待你的FBI探员”,这是书籍上的调侃,因为是美国人写的书,不过道理倒是真的,在互联网上我们可以成为任何人。多少电信诈骗的惨剧发生,我们不因该相信网络世界的任何人。钓鱼邮件也是一种伪装,你乱点,你不仔细看,你就中招。书中介绍很多方法用于伪装,我不干特工就随便看一下,不做记录。

——————社会工程心理学——————–


密码学复习

大四开了两门课,《信息安全数学基础》、《密码学》,临近期末考试,复习一下学过的知识

关于《密码学》老师说没有足够的课时,只能给我们讲一下常用的算法,在学习时可以看到密码学依赖于信息安全数学基础的学习,不过信安数学有点不太容易理解.

着重复习几个章节,首先是第三章的传统加密:

对称加密五部分:
明文
加密算法
密钥
密文
解密算法

密码编码学三特性:
1.转换明文为密文的运算类型
所有加密算法基于:代替和置换
2.所用的密钥数
用同一个:对称密码
用不同的:非对称密码,公钥密码
3.处理明文方式
分组密码:每次处理输入的一组数据,每次输出一组
流密码:连续处理输入的数据,每次输出一个

对加密信息的攻击类型
攻击类型 已知
唯密文攻击 加密算法;密文
已知明文攻击 加密算法;密文;用同一个密钥加密的一个或者多个名密文对
选择明文攻击 加密算法;密文;分析者选择的明文,对应的密文
选择密文攻击 加密算法;密文;分析者选择的密文,对应的明文
选择文本攻击 加密算法;密文;分析者选用的明文以及对应的密文;分析者 选择的密文以及对应的明文

——–代替技术————–

Caesar凯撒密码

C=E(N,P)=(P+N)mod (26) //每个后移n位

P=D(N,C)=(C-N)mod (26) //解密

playfair密码

playfair密码是多字母代替密码。基于一个5×5的字母表,其中i/j看作是同一个如下图

密钥是monarchy,从左到右去掉重复的摆在格子里,剩下的按顺序

playfair算法一次加密两个字母,规则如下

加密规则

hill密码

vigenere维吉尼亚密码

这是多表替换密码

首先根据密钥以及明文长度把密钥拓展到与明文一一对应之后,每个明文都单独加密

Vernam密码

———–置换技术—————–

栅栏密码

轮转机

第四章:分组密码和数据加密标准

会涉及DES、AES算法

现在使用大多数对称分组加密算法都是基于Feistel分组密码结构

DES加密

两个输入:明文、密钥
DES明文长64位,密钥长56位

以课本例题讲解
如下面图1,题目给出明文和密钥,我们先把他们的二进制格式写出来,然后从1开始标号方便后续查表。

图1 明文和密钥一样,化成二进制

1.现在要求出第一轮子密钥c0,d0,通过查下面图2的信息,找到密钥二进制位数对应的数字

图2 通过该表找到密钥对应的数字,置换成56位的子密钥

原本64位的密钥通过置换变成56位的子密钥,如下图3

图3 c0和d0是从56位子密钥对半分开的

然后c0和d0同时左移一位,见下图4

图4 循环左移

然后我们把c1,d1合并成一个56位的数据集,通过另一个表,见下图5来置换数据得到48位的子密钥K1

图5 通过此表把56位数据压缩成48位

得到了48位的子密钥K1,如图6

图6 子密钥K1

2.现在我们来对明文进行处理,根据下图7的表,对64位的明文进行置换

图7 根据此表置换明文

然后把置换好的明文拆分成位数一样的两个部分,记作L0和R0,既左半边和右半边,如图8

图8 置换后的64位

3.根据DES算法步骤,现在要对R0进行E扩展,此时L0不做改动,记为E(R0),目的是把32位R0扩充为48位,方法是把每四位的前、后一个数据加到头尾,如下图9,以1111为例,扩充后为01110,0000扩充后是100001

图9 扩充后的R0

4.接下来要用E(R0)和子密钥K1进行异或,注意到此时两者都是48位,结果如图10

图10 把E(R0)和K1异或的结果

5.随后我们要根据S盒来进行置换,因为分为了8组,因此有8个s盒子,记为S1-S8,置换的方法是,根据刚才扩充好的数据,以 0 1110 0 为例子,原数据是 1110 以左右两边 0 0 进行扩充,我们把扩充的 00看作是S盒的行号,原数据 1110 看作是S盒的列号,以此来进行置换(注意每次用的S盒不同),方法也可用下图11来计算

图11 通过S盒置换

5.把S1到S8置换后的数据拼接在一起,组成32位的数据,记为B,结果如下图12

图12 S盒置换后的结果拼凑在一起

6.接下来要根据另一个表来对上面的拼好的32位数据进行P盒置换,记为P(B),P盒见下图13,置换后的结果见下图14

图13 p盒 32位数据
图14 P(B)的结果,共32位

7.然后我们将P(B)跟L0(到目前为止L0一直未处理)进行异或得到新的R1,结果如下图15

图15 R1

8.最后求L1,L1就是R0,如下图16

图16 L1

这样完成了一轮DES加密

AES加密

AES使用有限域GF(28)内的算数,其中不可约多项式为:M(X)=x8+x4+x3+x+1,也就是二进制数00011011看a0到a7,尤其是分析a7情况
a7=0时,正常结果

a7=1时,结果需要异或00011011
注意,指的是左移之前的a7,如02·87=0000 0010 ·1000 0111=0000 1110(87左移一位),因为87的二进制a7为“1”,所以结果要异或 0001 1011 即 0000 1110 xor 0001 1011=0001 0101


AES的四个阶段:
1.字节替代:用s盒完成分组的字节到字节的代替
2.行位移:简单置换
3,列混淆:利用域上特性进行代替
4.轮密钥加:当前分组和扩展密钥的一部分进行按位异或

1.字节替代:根据给的s盒,从行列找出对应的值,注意x是行,y是列喔
2.行位移:第一行不动,第二行左移一位,第三行左移两位,第四行左移三位
3.列混淆:试图构造出带有02的,因为×02相当于左移一位,当移位前的最左边是1,也就是a7是1的时候,如上文所说要异或00011011
在列混淆中需要用到一个矩阵:
02 03 01 01
01 02 03 01
01 01 02 03
03 01 01 02
该矩阵是左边的,跟经过行位移后的矩阵进行乘法,即左边矩阵第一行乘右边矩阵第一列,再异或得到对应的数字,注意01乘啥是啥,02乘啥,啥就二进制左移一位。
4.轮密钥加变换

—-公钥密码—-

第九章:公钥密码学和RSA

RSA算法

C=Me mod n //加密
M=Cd mod n=(Me)d mod n=Med mod n //解密

RSA找到以下内容计算:
1.互素的两个整数 p、q //保密的,选定的
2.n=p×q //公开的,计算得出的
3.e 满足gcd(Ф(n),e)=1 //公开的选定的
4.d≡e-1 (mod Ф(n) ) //保密的,计算得出的
私钥{d,n},公钥{e,n}, Ф(n) =(p-1)(q-1)

第十章:密钥管理、其他密钥体制

Diffie-Hellman密钥交换

要定义离散对数,定义素数p的本原根a(就是信安数学的原根概念)

对于任意整数b和素数p的原根a,有:


算法:
素数q,他的原根α这两个整数是公开的。
当用户A与B要用该算法交换密钥,那么A要选择一个随机的整数Xa<q,计算Ya=αXa mod q,
B也要选择一个随机的整数Xb<q,计算Yb=αXb mod q。对于A要保护好自己的Xa,B要保护好Xb,通信的时候A和B可以交换Ya和Yb,接下来验证:
A计算K=(Yb)Xa mod q
B计算K=(Ya)Xb mod q
这两个算出来的K是一样的

EIGamal密码体制

同上一个算法一样,要选一个素数q,以及它的原根α(素根),用户A生成密钥对:
1.随机生成整数Xa,1<Xa<q-1
2.计算Ya=αXa mod q
3.A的私钥为Xa,公开的为{q,α,Ya}

用户B用用户A的公开信息对明文加密:
1.信息表示为一个整数M,使得1<=k<=q-1
2.随机选一个整数k,1<=k<=q-1
3.计算一次密钥K=(Ya)k mod q
4.把M加密成明文对(C1,C2),其中
C1=αk mod q C2=KM mod q

用户A解密:
1.计算K=(C1)Xa mod q //恢复密钥
2.计算M=(C2K-1) mod q //解密

第十一章:密码学hash函数

SHA-512

1.附加填充位
2.附加长度
3.初始化hash缓冲区
4.以1024位的分组(128字节)为单位处理信息
5.输出

示例:
对“abc”构成的消息块进行hash处理,可根据他们的ascii码写成二进制形式:
a:97(10) 0110 0001
b:98(10) 0110 0010
c:99(10) 0110 0011

所以“abc”一共有 24 位,二24对应的二进制为:1 1000

根据SHA算法,消息被填充后要跟1024模896同余,所以要填充长度为896-24=872位

填充的内容是 : 1个 “1” 和 871个 “0”

然后,把128位的长度信息附在填充消息的后面,表示保存的被填充之前的消息长度,在这里是24位,也就是1 1000(2)=18(16

因此,abc被扩充之后应该是如下:
0110 0001 0110 0010 0110 0011 | 1 0(*871) | 0(*123) 1 1000

前24位是abc的ascii码对应二进制,之后872位是1和871个0,最后的128位是若干个0(取决与原始长度)以及24对应的ascii码。一共1024位。

听霍老板报告会有感

今天听报告我对信息安全又有了一些新的认识,正如之前深信服的面试官提到的那样,当我们从国家出台的法律、规则、标准里面研究,我们会发现信息安全的面是十分广的,会有更多的角度去学习信安。

以前谢某上的专业课质量实属拉跨,导致我们班的人一度认为他讲的东西都是废话,因此有了“谈等保色变”的现象。等级保护、分级保护、大小信创、重保、护网等围绕网络安全开展的活动,对于我国各界信息保护是十分重要的,是十分必要的。

对于等保、分级保护,每个单位真正落实了有关单位的要求,才能让信息得到有效保护,然而,事实是即便国家出台了政策,但是不见得所有单位都配合执行,或者说执行不严格,执行不彻底,到头来还是漏洞百出。到头来一切还是“人的安全”。

霍老板分享了目前我们所使用的一些信息安全产品,让我印象深刻,简单来说信息安全要做到几点,让攻击者:
进不去->拿不到->看不懂->改不了->瘫不了->逃不掉
尽管防火墙、杀毒软件、入侵检测这老三样仍发挥着很大的作用,但是目前技术水平已经可以对他们进行绕过突破,所以我们需要挂上更全的保护措施。于是谈到了可信计算,即通过技术手段让系统识别数据来源,我深信,“来自用户的输入永远都是不可信的!”。

当时面试六方云的时候我了解到这个公司搞工控安全的,原本我也没有什么概念,但是在某个群里大佬的聊天我了解到,六方云在工控上是很牛的hhhh我看到他们提到基于人体免疫的模型来实现安全。巧的是霍老板团队也提出过这些方法,可以看出技术还是很多借鉴了大自然的一些事物特征。

Web安全攻防渗透测试学习(一)–信息收集

相较于之前文章的学习,这篇文章是进行一些补充,并且更细致的学习

收集必要的信息包括:服务器配置信息,网站的敏感信息,包括域名、子域名信息、目标网站系统、CMS指纹、目标网站真实ip等

1.1收集域名信息
1)whois查询
2)备案信息查询

1.2敏感信息查询
利用谷歌语法,之前文章有提到过,比如找后台网站

1.3收集子域名信息
子域名就是二级域名,思路通过攻克目标的某个子域再迂回。
1)工具:
Layer子域名挖掘机、K8、wydomain、Sublist3r、Subdomainburte等,其中
Layer子域名挖掘机:使用方法简单
sublist3r:能列举多种资源在如google搜索引擎中可查到子域名
subdomainburte:用小字典递归发现三级域名、四级域名等不容易被发现的
2)搜索引擎枚举:
3)第三方应用枚举:
4)证书透明度公开日志枚举:
证书透明度(certificate transparence,CT)是CA的一个项目。利用搜索引擎搜索公开的CT日志
https://crt.sh
https://censys.io
进行子域名枚举

1.4搜集常用端口信息
除了nmap还有一些工具,如基于无状态端口扫描工具:Masscan、ZMap、御剑高速TCP端口扫描工具
———-文件共享服务端口———————————-
–端口号————端口说明—————–攻击方向—-
21/22/69 ftp/tftp文件传输协议 允许匿名的上传、下载、爆破、嗅探等
2049 nfs服务 配置不当
139 samba服务 爆破、未授权访问、远程代码执行
389 ldap目录访问协议 注入、允许匿名访问、弱口令
———————————————————————
———-远程连接服务端口———————————-
–端口号————端口说明—————–攻击方向—-
22 ssh远程连接 爆破、ssh隧道以及内网代理转发、文件传输
23 telnet远程连接 爆破、嗅探、弱口令
3389 rdp远程桌面连接 shift后门\爆破
5900 VNC 弱口令爆破
5632 pyanywhere服务 抓密码、弱口令执行
———————————————————————–
———-web应用服务端口———————————-
–端口号————端口说明—————–攻击方向—-
80/443/8080 常见web服务端口 web攻击\爆破、对应服务器版本漏洞
7001/7002 weblogic控制台 java反序列化\弱口令
8080/8089 jboss/resin/jetty/jenkins 反序列化、控制台弱口令
9090 websphere控制台 java反序列化、弱口令
4848 classfish控制台 弱口令
1352 lotus domino邮件服务 弱口令、信息泄露、爆破
10000 webmin-web控制面板 弱口令
————————————————————————-
———-数据库服务端口———————————-
–端口号————端口说明—————–攻击方向—-
3306 mysql 注入、提权、爆破
1433 sqlserver 注入、提权、爆破、SA弱口令
1521 oracle TNS爆破、注入、反弹shell
5432 postgresql 爆破、注入、弱口令
27017/27018 mongoDB 爆破、未授权访问
6379 redis 未授权访问、弱口令、爆破
5000 db2 爆破、注入
————————————————————————–
———-邮件服务端口———————————-
–端口号————端口说明—————–攻击方向—-
25 smtp邮件服务 邮件伪造
110 pop3协议 爆破、嗅探
143 imap协议 爆破
————————————————————————–
———-网络常见协议服务端口———————————-
–端口号————端口说明—————–攻击方向—-
53 DNS服务 允许区域传送、DNS劫持、缓存投毒、欺骗
67/68 DHCP服务 劫持、欺骗
161 snmp 爆破、搜集内网信息
—————————————————————————
———-特殊服务服务端口———————————-
–端口号————端口说明—————–攻击方向—-
2181 zookeeper服务 未授权访问
8069 zabbix服务 远程执行、sql注入
9200/9300 elasticsearch服务 远程执行
11211 mencache服务 未授权访问
512/513/514 linux rexec 爆破、Rlogin登录
873 rsync服务 匿名访问、文件上传
3690 svn服务 svn泄露、未授权访问
50000 sap management console 远程执行
—————————————————————————

上面的端口在平时可能接触不多,但是我认为要从实际出发不要局限平日所说的常见端口,当人工测试的时候能快速想起来端口对应的服务以及能攻击的思路就是最大化利用好时间。

1.4CMS指纹
常见CMS:
dedecms织梦
discuz
phpweb
phpwind
phpcms
ecshop
dvbbs
siteweaver
aspcms
帝国
Z-blog
wordpress
等—————————————————————
工具:御剑web指纹识别、whatweb、webrobo、椰树、轻量web指纹识别
在线网站查询cms:
bugscanner:http://whatweb.bugscanner.com/look/
云悉指纹:http://www.yunsee.cn/finger.html

1.6查真实ip
如果没用cdn,在www.ip138.com可以获取信息
如果使用cdn:
1)利用在线网站查看IP判断是否有cdn
www.17ce.com
2)内部邮箱源
邮件系统一般没经过cdn解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的邮件服务器域名ip ,然后ping它,就得到真正ip(只能是目标自己的邮件服务器有用
3)扫描网站测试文件
找到如phpinfo、test等
4)分站域名
主站挂cdn的可能分站没挂,ping二级域名找到分站,可能分站和主站在同一个c段
5)国外访问
https://asm.ca.com/en/ping.php
6)查询目标解析记录
以前没用cdn可能留下过痕迹用网站查一下:https://netcraft.com/观察ip记录
7)目标网站有app
用fiddler抓包
8)绕过cloudflare cdn查找ip
http://www.crimeflare.us/cfs.html#box

验证获取到的ip:
直接通过ip访问;
目标段比较大的时候,用masscan工具批扫描对应的ip段所有开了80、443、8080端口的ip,逐个访问然后再判断一下。

1.7搜集敏感目录文件
主要用工具扫:
dirbuster、御剑后台扫描珍藏版、wwwscan、spinder.py、sensitivefilescan、weakfilescan

1.8社会工程学



隐写溯源

写这篇文章是因为就要搞毕设了,本来按流程11月7号就应该发的通知现在才给我们,说是20号确定题目,1月份开题报告….流汗黄豆,这学院真是服了。

隐写术,初次了解应该是来自于电视剧、小说、故事里,人们用特殊墨水书写信息,干了之后会隐形,达到一个隐藏信息的作用。接收方通过用别的药水,或者是用火烤的方式能让文字显性。

再次接触到隐写,是上次玩ctf比赛杂项中遇到的许多有趣的题目,我稍微回忆一下

1.图片的文件名被改成其他格式:
首先我用010editor来查看文件的16进制格式,通过判断文件头来判断是什么样的文件,因为不管是png文件还是jpg文件都会有属于他们的文件头,修改回原来的格式就行,一些文件头例如
.png:89 50 4E
.JPEG:FF D8 FF
.GIF:47 49 46 38
[可参考常见文件文件头_Forever.Sun-CSDN博客]

2.一张图片,但是看起来有点像显示不全:
通过010editor来查看16进制数,修改行宽

3.一张图片,色彩丰富:
很有可能考察LSB,最低有效位,用工具【StegSlove】设置参数,看到返回值有有意义的文字

4.一张图片看起来平平无奇,一用010editor看发现好长啊没道理:
这意味着这张图片夹着别的文件,用工具进行分离。比如kali的【binwalk】可以把文件分离出来。【foremost也是用来分离文件的工具】

5.有时候分理出压缩包,还是丢进010editor查看:
若加密位为09后一个校验位也是09,是真的被加密了,此时可以用工具或者脚本爆破
若加密位为09后一个校验位是00,是伪加密,把第一个09改成00就可以正常解压了

6.音频的隐写,笑死舍友手撕摩斯电码

隐写很多时候跟crypto联合一起出题的,那次ctf我玩的很开心。

回到本文要讲的,这次霍老板给出三个方向:
1.对加密文件在密文状态下进行操作(增删改查)
2.敏感文件的检测
3.隐写溯源

三个方向都很有现实意义,老实说第一个是老师的拿手好戏,在研究密文方向开辟了新的道路的。但是我比较对隐写溯源感兴趣,也许是因为玩ctf的时候培养的吧,就像是玩捉迷藏一样,想办法找到藏在信息里的信息。并且涉及到溯源,在网安学习必然会碰到要溯源的情况,或者说如果是HW蓝队高级人员是要进行溯源以及反打红队的,因此我觉得这个方向的学习无论是对于知识还是技术,无论是以后研究还是工作都会有很大的的帮助。

隐写溯源,说白了是通过往文件里面插入“透明的”数据打上标记,可以方便验证文件的机密性等,而当需要进行溯源的时候,也可以通过标记看出传播链。

下面是我的一些想法(也是心中的疑问):
1.文件本身是干净的,那么给他加水印就破坏了完整性,因此日后所说的原来的文件是指干净的文件还是加水印之后的文件呢?

2.文件加了水印之后哈希值会发生改变,那么怎么防止一些检测系统的算法验证哈希值不同而产生的误报、漏报问题?

3.加了水印之后要是有人拍照截图传播怎么办?

4.有什么方法防止水印被修改,清除,怎么感觉还可以给水印加水印,这样一层层套娃有没有意义?毕竟人的思维很活跃,保不准有人就是花费大量心思来破解并且修改让我们认为传播链没出现问题。像md5通过碰撞就能解出密文。

5.怎么实现的溯源

6.还是那句话,溯源过程信息怎么防止篡改

7.若隐写溯源这项技术成为主流标准,那么,当水印通过一些程序、硬件扫描验证,是不是意味着可以触发一些安全问题,比如代码执行、命令你个执行?也就是说万一黑客知道要根据这个技术进行解密,故意构造payload替换掉水印的部分,是不是当程序验证的时候就会触发?

8.由于这个技术是用来溯源,那么怎么防止黑客利用技术来获取内网的拓扑结构等十分敏感的信息?黑客会不会通过技术对系统进行渗透?

9.待补充

很多想法出现在我的脑海里,我越发觉得有点意思,很期待下周的组会或者有时间找霍老板聊一聊。随着学习安全的知识的增长,慢慢的我开始感觉到无力,因为没有绝对的安全,只有当攻击成本远远大于防御成本,或者防守方提前发现可利用漏洞,才能算上安全。因此,通过分析隐写溯源,我认为他是一把双刃剑,既可以便于我们审计文件安全,也存在着被黑客利用的地方。

尽管存在一定的风险,但我认为十分有必要推进这方面技术,因为现实问题的需要。我们经常在网络上看到大量被散布的某些单位的秘密文件,大家是吃到瓜了,但这侵犯了他人隐私,侵犯了他人利益,更坏的来说泄露这些消息可能会导致社会出现动荡,网上例子很多,我举一个发生在最近的例子:
2021年12月上旬,广西境内出现了几个从越南偷渡过来的新冠患者,在我国传播病毒,其中一部分人的轨迹扩散多地,不久后他们被检测出阳性,并且被控制。随后,朋友圈流出了一份excel文件,记录了与新冠人员密切接触者的信息,包括姓名住址联系方式职业等等(比如20个小姐),无疑引爆了网络,大家开始摩拳擦掌搜罗更多相关信息。

在火热的吃瓜潮,最头痛的除了被泄露信息的人,还得是编写这份文件的单位。本应秘密保管的内部资料被如此散播到互联网,性质十分恶劣。相同的事件比比皆是,泄露的信息让人们震撼。那么我们就要进行溯源,然而很多时候溯源是很难完成的,因为传播的可能是源文件的视频、截图等。所以要使用隐写溯源让文件拥有唯一性和扩散路径可以控制并且可以进行溯源。

那么现在目前的隐写溯源技术是怎么样的情况呢?霍老板说能把水印压缩在小四号字大小的范围,简单的看文章说,最常使用的是明文水印,但这个太容易被去掉,还有就是数字水印。水印通过对行间距等文档的格式进行一些修改,不易看出,还能存储信息,但缺点也很明显:存储信息少、存储压缩的空间还能再小、可用性不高,对文档或者图像进行调整(合法人员)水印可能受到影响失去可识别功能。

参考文章:文档隐写溯源技术分析

根据文章提出,为了优化隐写溯源的功能,将从文档管理系统文档隐写技术改进
——————————-文章将文档管理系统分成四个功能模块:—————————————
1.文档上传:
上传原始文档
2权限控制:
可以根据文档受众设置不同权限的访问列表,限制人能获取的信息
3.文档控制追踪:
这个模块是核心模块,实现访问控制,记录传播痕迹生成完整的溯源链。溯源信息包括访问记录标识符,访问文档的用户信息、访问时间、设备标识符、前置溯源标识符(也就是上一个文档记录)等,在办公每一次访问文件都会留下记录。之前提到的几个问题,关于机密性完整性的保护,应该还要加上签名、加密的功能,为防止中间人、重放等攻击,要用时间戳。
4.溯源查询模块:
能做到查询任意文档的扩散链

——————————文章提到文档隐写技术的改进涉及两个技术:————————————-
1.盲水印:
就是人眼看不出来的水印。当上级下发的通知不允许编辑,一般会保存成图片加上盲水印实现隐写。文章指出,目前主要的两种盲水印技术是空域方法频域方法,在文档添加水印作为冗余信息,同时保证图片质量不发生改变。
空域是直接把水印叠在图像上,频域则是通过某些变换方法,如傅里叶变换、小波变换等,把图变到频域,添加水印后再通过逆变换转会空域,此时图片带有水印。
关于空间域和频率域见其他文章
ctf隐写的题目中最低有效位的隐写,我想就是利用了这些思想,添加的数据是不会影响图像质量(微乎其微)

2.文字欧拉函数:
在阅读到文章这部分的时候我简直拍手喊牛。尽管盲水印可以解决一部分问题,但是当人传播文件的方式是经过截图、摄屏的话盲水印很有可能会失效。文字欧拉函数就解决这一问题,这是一个找不同的技术,通过对文字笔画的删减,构造出唯一的版本号,具体细节参考第一篇链接的文章,这里我不再讨论
从技术角度分析,要实现它的功能,需要依靠先进的图像识别算法的支持,使用文字欧拉函数技术把文件提取出一个矩阵保存在数据库,当遇到传播文件是通过截图等方式的时候,可以通过对比截图部分的矩阵,来判断泄露源。
果然无论解决什么问题,一切的核心都围绕着算法,对于怎么给每次访问打上唯一水印,我想每一次传播,我们的隐写术都会对文档进行精密的手术(不妨碍阅读、不破坏原有信息的表达)


昨晚入睡前我想,我研究方向是基于电子图片的隐写信息的识别,要做到的效果应该是无论从哪个角度拍摄,只要能看懂明文水印就要能被识别出来,要是人用p图改颜色加滤镜增加干扰因素也要尽量能识别出来,霍老板提到,存在一种说法只要多截几次图就能把水印的效果去除,联想到平时上传图片过大时,我也是会反复截图来降低分辨率来达到目的,那么有没有方法应对呢?
我想到两个方面可以着手探讨
1.水印强度足够,怎么折腾都能被识别
2.想办法让文档、图片在经过多次压缩截图一类操作的时候失去辨识度,也就是说,尽管到那个时候水印失去了效果,但是图片也已经无法被人识别,在换句话说,水印的效果要达到至少原文要无法被人分辨了的程度才能被破坏

我认为我感兴趣的将会是针对水印的安全,也就是当水印具备了基本的作用,我要保证水印不被恶意利用,因为我注意到,解析水印这个动作是有安全风险的。



跨站脚本攻击

xss经常出现在大家视野owasp排老前了,我自己就挨跨站搞过被盗了号,流汗….

xss主要影响的是客户端的安全,乱点小网站乱点小链接,你敢点,你就挨中招….

查阅资料,了解到如今大多数网站使用JavaScript,自学的时候我也发现了js很灵活很轻便,可以完成计算、动态页面的实现之类的,那一般来说js是针对于客户端的语言,放置在客户机上(php是服务端语言,放服务器上)js代码是可被网页引用也可以直接镶嵌在html、php文件里面的,之前做ctf题目的时候无法检查网页代码,于是我想这是不是js进行了限制,于是通过浏览器设置关闭了js,就可以审查网页代码拿到flag。因此我们知道浏览器默认开启对javascript脚本的支持。

xss类型:在我学习经历来看常见的有三

1.反射型(非持久型):构建欺骗url,点了就触发恶意代码了

2.存储型(持久型):把代码插在数据库,操作碰到那条数据就执行

3.dom型:对比上述俩需要由服务器传给用户的xss类型不同,dom型的交互发生在前台。
dom :document object model把html的标签按照父子兄弟关系建立一个树结构,简单来说dom型的xss是攻击者发送带有恶意js的url给受害者,受害者点击之后访问某个服务器,服务器返回静态的html(带有js)此时客户端的dom就改变了,并且浏览器执行恶意代码访问攻击者服务器等其他操作。

xss攻击用途:
1.拿cookie劫持会话
2.记录按键,比如输入密码,并把数据回传到攻击者电脑
3.挂黑页
4.向网页注入链接或者广告
5.立即将网页重定向到恶意网站
6.窃取用户登录凭证,盗号…比如某应用便利登录不是直径点qq就能登录了吗,盗号就是这么挨的喔。

一个有趣的绕过过滤的方法—双写关键字绕过
当网页对输入进行了过滤,比如把script给去掉,可能只会去掉一次,那么让去掉之后还有script就好了,如下:
<scrscriptipt> alert(‘咩哈哈哈哈哈哈’) </scrscriptipt>就弹窗了

那如果传入的代码被标签包着了不能执行咋办?,如下:
<input name=keyword value=”<script>alert(‘xss’)”</script>”>
此时就要想办法把前面的input闭合就好了 ,语句如下:
“> <script>alert(‘xss’)”</script>

下面是一种使用<img>标签构造脚本的方法:
<img src=ops! onerror=”alert(‘XSS’)”>
img下载图片,地址是src之后传的,,onerror是当图片或者文档加载出现错误的时候触发的事件。所以也就是说当src传的ops!是非法的东西的时候就会触发onerror事件执行代码。


补充学习:

跨站发生的一些特征,是用户输入的信息会改变页面的显示,比如一个搜索框,搜索某个关键字,结果显示包含刚输入的字符,可能就会有xss(反射型)漏洞了。

比较显著的功能就是留言板,是典型xss攻击最常用的地方

而存储型xss,在留言板类似的功能,把payload输入会存储在数据库中,只要调用数据库就会执行。

文件上传漏洞

本来文件上传是一个正常的需求功能,但是如果没有对用户上传的文件进行恰当的检测,攻击者就上传一些奇奇怪怪的东西到网站上面,比如木马、脚本啥的,就可以对着你的服务器说:拿来把你。
文件上传本身是一个严重的漏洞,webshell将这个漏洞无限放大,来说说webshell:

webshell

webshell是以ASP/PHP/JSP或者CGI等网页文件形式存在的一种命令执行环境,也称为:后门
黑客会把后门文件放在WEB服务器根目录下跟别的文件混在一起,之后可以利用自己的浏览器进行连接,访问这些后门,常见工具:蚁剑 。在之前弹webshell实验的时候用过netcat就可以往有文件上传漏洞的网站传,再通过其他方式远程执行命令,让攻击者可以获得目标主机的shell。

webshell特点:隐蔽性高,较为轻松穿过防火墙,并且访问webshell的时候不会留下系统日志,只会在网站的web日志中留下数据提交的记录。注意到,很多时候为了混淆,黑客会修改文件的时间

另外,黑客为了通过检测,通常先传小马再上大马,下面聊一聊常见🐎

最经典的🐎: <?php eval($_POST[a]); ?> // eval()把里面的字符当php代码执行

<?php eval($_POST[‘pass’]); ?>

<% execute(request(“pass”)) %>

<?php assert($_POST[‘pass’]); ?>

文件上传漏洞会出现在:
带有上传功能的地方,比如头像上传、图片上传、文档上传等,只要通过各种方式修改文件后缀以及文件类型,就可以绕过限制条件。
一般传的后缀:PHP/ASP/JSP

文件上传一般被这么用:
1.传木马、病毒的时候用来骗用户或者管理员点点点
2.传webshell,用工具连接
3.传恶意脚本,黑客直接用
4.传恶意图片,有图片马,点击图片就中了
5.上传的文件是伪装成正常后缀的恶意脚本文件,黑客利用其他漏洞比如本地文件包含漏洞执行这些恶意文件。比如,一个恶意文件bad.php文件名改成了bad.doc之后被上传到服务器,此时PHP的包含函数就能利用他们了,(include、include_once、require、require_once)

那到底是啥原因整出这些玩意儿啊?
1.文件上传时检查不严
仅在客户端检查会被抓包工具截取数据包之后改包;有些有黑名单检查,但检查的时候忽视大小写,改一个字母就饶过了;有些有白名单检查,但是忘记了别人会用%00这种截断手段。
【截断在别的文章我也讲到过,在代码审计的文章那】
截断:上传 xxx.php%00.jpg %00会被url解码变成\000是一个终止符。也就是说检查的时候看起来是jgp,传到服务器就时php了。

2.文件上传后修改文件名时处理不当

3.使用第三方插件时引入

下面举一个用工具连接上传木马的小例子

kali 自带的 工具 weevely 来连接木马

1.启动weevely

2.使用命令创建后门木马:
weevely generate pass shell.php

3.利用文件上传漏洞把生成的php文件上传

4.上传成功后,页面会回显用户上传文件的路径(?我不明白为什么会回显,是本来就会回显还是代码让页面回显)

5.根据回显路径,使用命令进行连接
weevely http://192.168.xx.xx/dvwa/hackable/uploads/shell.php pass即可连接后门,相当于使用ssh登录了目标服务器

WEB安全

从今年暑假到今天,我在课外学习了基本老师推荐的书籍
《headfirst java》、《headfirst php&mysql》、《javascript》、《html5&css3》、《图解HTTP》。尽管没能完全学到所有的精髓,但是我认为我已经对web安全有了比较好的了解

随后我搭建网站有了博客,也写了有功能的网页,再让我对数据的传输交互有了理解,对待安全问题我想规范的编码方式很重要,还有从这次爆发的漏洞看来,果然,用户输入的一切都是不可信的,哈。

阅读《漏洞利用及渗透测试基础第二版》第九章web安全基础,其中关于web的知识点大体我都已经学过了,看懂代码没什么问题,它们都曾出现在开头我说的那几本书里。那么本篇就学习一下著名的owasp(open web application security project)开放式web应用程序安全项目
经典的2010年10大安全威胁排名:

1.注入

2.跨站脚本

3.遭破坏的身份认证和会话管理

4.不安全的直接对象引用

5.跨站请求伪造

6.安全配置错误

7.不安全的加密存储

8.没有限制的url访问

9.传输层保护不足

10.未验证的重定向和转发

遭破坏的身份认证和会话管理这点上,认证(authentication)和授权(authorization)很重要,那么多电信诈骗,很多时候人们贪小便宜为了免费的礼物扫码,殊不知这一扫就把自己的身份认证给了对方,很快的账号就被窃取。

人们一般对简短的,看起来很正常的域名相对缺乏防备,他们很少产生顾虑去点击这些不明的短链接,殊不知那是黑客构造好的含带恶意脚本的url,经过工具变成的短链接。

我有一次惨痛的经历,那是疫情期间在家上网课的时候,当时我还在通过app上网课,此时看到老师演示画面班群一直闪烁,有人被盗号了一直发消息,正当我还在好奇是哪个小倒霉蛋中招的时候,打开qq一看,操,是我。说这个故事是我学习安全,没有点击连接,没有躲开画面,在毫不知情没有理由的情况我怀疑我被跨站了,也就是我可能点到了挂有木马的某些网页。所以我觉得除了不要乱点网页,也不要打开过多的网页防止被跨站。

为啥,我们被窃取的是啥,是一点连接账号密码就没了吗,不是,是一点链接我们的session被盗了,黑客用我们的身份去做坏事,就是会话劫持。

那我们知道cookie和session是有有效期的,cookie时间过了,session设置的时间到了或者关闭网页或者注销,不久销毁了session了吗?会话保持攻击,黑客会一直刷新让服务器认为客户一直在线,用下面代码可以实现:
<script>
var ul=”http://xxx.xx.com/index.php?sid=1″;
Windows.setInterval(“keepsid()”),6000);
Function keepsid()
{
Document.getElementById(“a1”).src=url+”&time=”+Math.random();
}
</script>
<iframe id =”a1″ src=””> </iframe>

[防御]:设置时间强制销毁session


那么在不安全的直接对象引用这方面,就是有些不太聪明的程序员把不应该给别人知道的对象引用直接暴露给别人,也就是DOR(Direct Object Reference)直接对象引用。用户此时只要改一下url就能直接引用对象,有时候会访问到未授权的内容。(那不就是目录跳转了吗….)(也不是,就是修改参数来跳转。)

再谈谈未验证的重定向和转发。重定向(http状态码3xx)是网络请求从一个网址转移到另一个网址。重定向的指向目的是通过用户输入的参数得到,如果没有经过验证,攻击者就可以将其他用户引导到特定的站点(坏坏的网站只能说)这些站点可能有木马,可能是钓鱼网站。未经验证的转发可能导致用户绕过验证和授权机制。
[防御]:避免使用重定向和转发;使用重定向和转发的时候要避免通过参数获得地址;如果必须要获得地址,必须经过校验,加强授权和认证。


log4j2 远程代码执行

关注到最近出现了新的漏洞,看了一下网上别人的文章,学习一下

背景:apache log4j2时基于JAV的日志记录工具,它重写了log4j框架并加入了很多特性。许多业务系统使用该日志框架开发,存在有开发者记录用户输入导致的错误信息,这些信息会储存再日志。

【威胁等级】严重
【漏洞如何利用】:外部用户输入的数据被日志记录,造成远程代码执行。
【排查】:查看Java应用是否引入 log4j-apilog4j-core两个jar
【影响范围】:apache log4j2 2.0—-2.14.1版本
【应对方法】:升级到安全版本:log4j-2.15.0-rc1

看到“宽字节安全”相关的文章,引言的话让我印象深刻:
“一个称得上优秀的框架,必备的要素之一是可以通过某种约定的格式读取所运行环境中的配置信息”

学习安全,给我的感悟就是学的越多越觉得这个世界上没有安全一说,不管技术如何发展,“人”总会出现问题,在科技上“人”起决定性因素,首先我们使用的机器、技术都是人造的,计算机很聪明,能帮我们做到很多我们做不到的事,计算机也很笨,我们不进行设置它就什么都不知道。便利和安全是不可兼得的,我们为了便利统一了标准,这就让攻击者更有针对性的利用通用技术攻破大量资产,我们为了安全加上了访问控制,这就让我们打开手机打开应用都要先进行多步验证。这次这个漏洞出现在较新的框架中,可见,再新的技术还是得重视安全问题,勿给存坏心眼的人可乘之机。

log4j2 有一个lookup功能,为方便人调用,可以在任何位置使用约定格式获取环境中的指定配置信息。lookup可能会出现在不同的日志级别,下面是log4j2的8个日志等级:从低到高
all<trace<debug<info<warn<error<fatal<off
1.all:最低等级,打开所有的日志记录
2.trace:追踪,程序的推进
3.debug:指出细粒度信息事件(细粒度就是把复杂的东西拆成更细节的操作)
4.info:消息在粗粒度级别上突出强调应用程序的运行过程
5.warn:输出警告以及warn以下级别的日志
6.error:输出错误日志
7.fatal:输出每个严重的错误事件将会导致应用程序推出的日志

程序会打印高于或等于所设置级别的日志,设置的等级越高,打印出的日志越少。

不管什么级别都能触发lookup,有时候看不到是因为设置的日志等级过高。

查阅关于log4j2的一些文章:

1.log4j2 提供了许多方法获取所运行环境的配置信息
2.自定义lookup的时候,可以选择继承不同的类,如strlookup、abstractlooup等

渗透测试

渗透测试过程
【根据渗透测试执行标准PTES】
1.前期交互阶段
2.情报搜集阶段
3.威胁建模阶段
4.漏洞分析阶段
5.渗透攻击阶段
6.后渗透攻击阶段
7.报告阶段

1.前期交互阶段:
测试团队与客户讨论,明白需求,确认测试的范围、目标、限制条件、授权(书面)

2.情报搜集阶段:
进行信息收集、漏洞打点

3.威胁建模阶段:
团队成员商讨,根据的收集到的信息进行【威胁建模theat modeling】与攻击计划

4.漏洞分析阶段:
进行漏洞分析

5.渗透攻击阶段:
渗透攻击(Exploitation),利用安全漏洞进行攻击、入侵、获取权限

6.后渗透阶段:
后渗透攻击post exploitation,测试团队根据目标防御计划的特点,实施获取敏感数据,进一步拓展、实施跳板

7.报告阶段:
交付给客户,拿到钱,写报告

dc1的实验完成了前五步,前期搜集到资产,进行了主机发现,搜集到足够信息后分析出可以利用的漏洞,然后利用工具实现漏洞的利用,拿到系统权限,拿到数据库的数据。但是没有进行进一步的内网渗透。
在这些步骤,我认为很大程度上在信息收集阶段就可以决定一次渗透测试的效果。因为我们必须对资产边界一类问题了解清楚,才能合法的进行测试,并且,由于安全问题遵从短板效应,只有详细的了解到相关信息,才能得到突破口。再者,当我们遇到漏洞或者其他可以利用的地方时,我们除了发现,还要能识别,比如被加密的数据,被编码的数据,他们的加密方式是什么,他们的编码方式是什么,比如一眼能看出来md5,sha-1编码等。这样,在渗透测试的过程中才能把精力花在正确的方向,不至于一开扫之后就啥都不懂了。

渗透工具有很多,我们的老朋友kali集成了许多工具。搞渗透嘛,离不开虚拟机和工具,想起这几年东密歇根大学的DR.lee还有班菲尔德教授给我们带来的实验课,真实而有趣,第一次玩虚拟机,装win8是在大一的那个夏天哈哈,第一次装kali则是信安协会的培训装的,后面几个学期DR.lee的课玩服务器,我也算是windows xp、win7、win8、win10、windows2008、windows2012、centos7、kali(debian)、ubuntu都玩过的,vm15.5从班菲尔德教授上课一直用到现在,坚挺得很,我可谓是太会装虚拟机了,下面是遇到安装或者启动的时候虚拟机黑屏没反应的措施:
1.首先把虚拟机关闭,把vm关闭,把进程关了,重启一遍,然后物理机cmd,输入一下命令:
netsh winsock reset 这条命令相当于重启一下网络,因为虚拟机可能出现了接口的冲突
2.安装新的虚拟机时,除了稍后再配置光盘映射,启动时最好在【选项】虚拟机启动项里选择启动,然后再bios界面把光盘的位置通过方向键拉到第一位

然而当我想做实验买来有嗅探功能的网卡,开开心心插进电脑,不是kali死机就是物理机死机,gg了。我的小愿望是电脑能正常运行kali然后被我插上网卡进行试验。

渗透测试框架
工具:Metasploit:是一个开源的渗透测试框架,也是漏洞研究与渗透代码开发平台

这个工具可以在渗透测试的各个阶段发挥一定的作用
1.在情报搜集的阶段:
metasploit有自己的扫描探测,也有插件利用其它工具比如:Nmap、Nessus

2.威胁建模阶段:
支持数据库命令将信息汇总到MYSQL数据库,帮助找出最可行的攻击路径

3.漏洞分析阶段:
提供大量协议的Fuzz探测器与Web应用漏洞探测模块

4.后渗透阶段:
metasploit有一个名为 Meterpreter 的工具,该工具可以驻留在内存并且具有面纱能力,是个高级的后门程序,比其他工具更出色(BO、BO2K、冰河、灰鸽子

5.报告生成阶段:
可生成报告

之前玩DC-1靶场的时候就有用到Metasploit,具体看看它的一些命令和操作。

该工具在kali就有,可以用kali进行实验,下面是一些常用命令:
1.msf>back
算错模块可以返回
2.msf>show exploits
显示工具中所有的可用的渗透攻击模块,exploits可以分为 主动型 和 被动型 ,被动型等待连接之后才能用,一般用于浏览器,ftp等
3.msf>search
用于查找特定的渗透攻击、辅助或攻击载荷模块。比如要搜索跟sql有关的模块
msf>search sql
如果是搜索特定漏洞,如
msf>search MS08_067

4.msf>show auxiliary
显示所有辅助模块以及用途
5.msf>show options
显示参数,并且显示yes的参数是需要配置的,比如DC-1要用到的命令需要配置RHOST才能使用
6.msf>show payloads
将当前模块的攻击载荷显示出来
7.msf>use
找到需要使用的攻击载荷或者模块之后,用use命令加载它们,这个时候提示符会变成该模块的命令提示符,通过配合show options来配置参数进行利用
8.msf>show targets
可以列出受漏洞影响的目标系统的类型
9.msf>info
显示更加详细的信息
10.msf>setunset
所有的参数只有set和unset两个状态,有些参数时必填的
11.msf>check
检测目标主机是否存在指定漏洞

渗透实践

一、信息搜集

被动信息搜集:通过搜索引擎、社交媒体等进行搜集,如通过 whois信息,dns信息等
1.搜索引擎查询:
掌握一些hacking语法
site: 指令:只显示来自某个目标域名(例如xx.com)的相关结果
intitle: 指令:只显示网页标题包含搜索关键字的结果
inurl: 指令:只显示在URL中有关键字的结果,比如找后台网页
【上述命令可以组合使用】


2.IP查询
一般ping一下。但是很多企业的waf是阻止ping的,还有当企业使用CDN(conten delivery netwo)内容分发网络技术的时候,ping到的只是部署的静态页面的服务器,这个时候可以试试用外国ip来ping,因为CDN主要针对国内加速。或者比如目标时www.xx.com的时候不妨把www去掉再ping,因为一级域名没有被解析到CDN服务器上。


3.WHOIS搜集
除了站长之家一类的网站可以查看信息,如果使用linux,使用 whois xxx.com可以查询目标域名的whois 信息


4.DNS信息搜集
Linux的 host 命令可以查询DNS服务器,如
host -t ns xxx.com


5.旁站查询
子域名爆破,或者用必应搜索引擎,输入:
ip:%xxx.xxx.xx.xx来查看


主动搜集:会与目标主机进行交互,会留下记录
1.发现主机
使用Nmap工具进行扫描,如扫描网络在线的主机
nmap -sP 192.168.xx.xx 或者 nmap -sP 192.168.1.0/24
[-sP的意思是用ping命令扫描,但是不扫描端口,应该是基于字典的一个遍历扫描]

2.端口扫描
使用Nmap其他命令,如
namp -p 1-65536 192.168.1.x扫描目标主机开放的端口

3.指纹探测
使用Nmap其他命令,如
nmap -O 192.168.1.x 扫描主机的系统或者版本

4.Web指纹探测
使用Nmap其他命令,如
nmap -sV 192.168.1.x 扫描一个web容器的信息,因为很多时候不同的容器默认的错误页显示都是不一样的,从很多地方的特征可以判断出容器的信息。打个比方,同样是错误页,apache就跟nginx显示的404不一样。

5.Web敏感目录扫描
通过字典来扫描的,可以使用:
【工具:dirb】需要自己提供一些敏感文件的字典
【工具:Webscarab】一款Web爬行工具,可以用来爆破目录

二、扫描

学一个工具:Nessus
这是一个漏洞扫描程序,其漏洞库一直更新,可同时在本机或者远端遥控,甚至可以在手机使用。
扫描阶段有很多工具可以使用,及进行测试的时候应该根据情况选择

三、漏洞利用
用呗

四、后渗透攻击
1.挖掘用户名和密码
学习过程中,很多密码是经过加密的,或者是被编码了,因此拿到了权限拿到了数据还不能马上利用。这就要求我们懂得辨认加密或者编码的方法了,比如:
windows系统存储哈希值一般为:
LAN Manger(LM)、NT LAN Manger(NTLM)、NT LAN Manger v2(NTLMv2)

在LM存储方式中,用户输入密码,或者更新密码,密码都会转换为哈希值。但是由于哈希长度会限制,就会把密码分为7个字符一组的哈希值,比如:
password123456 会被拆成password123456来存储。NTLM则不考虑长度,将密码作为整体加密。
【操作】提取系统用户名和哈希值
【工具】meterpreterhashdump模块
命令行: meterpreter>hashdump

然后想办法得到明文。

2.获取控制权
shell命令获取目标主机控制台