在写这篇文章的时候想了很久,不知该不该写,但最后还是坚持下来了,还是写下去。因为可以帮助到大家的话,也是很欣慰的一件事。此内容虽然很简单,偏入门,如若被大佬们看到,请不要见笑,仅此分享,望抬爱。

声明:

[ 不能利用这些技术去搞破坏,仅供参考和学习! ]

学习步骤分为以下几步骤:

一、信息收集方法

是指通过各种方式获取想需要的信息(各种有价值信息,包括账号密码等),它是信息得以利用和关键的一步。信息收集的前提工作做得好与不好,决定后面事情的成败。

常用到的信息收集的方法有:

1、通过搜索引擎:比如Google hacker,类似以下常用语法:

intext:
这个就是把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:网络安全.
将返回所有在网页正文部分包含"网络安全"的网页.allintext:使用方法和 intext 类似.
intitle:
和上面那个 intext 差不多,搜索网页标题中是否有我们所要找的字符.例如搜索:intitle:网络安全.将返回所有网页标题中包含"网络安全"的网页.同理 allintitle:也同 intitle 类似.
cache:
搜索 google 里关于某些内容的缓存,有时候也许能找到一些好东西哦.
define:
搜索某个词语的定义,搜索:define:hacker,将返回关于 hacker 的定义.
filetype:
这个我要重点推荐一下,无论是撒网式攻击还是我们后面要说的对特定目标进行信息收集都
需要用到这个.搜索指定类型的文件.例如输入:filetype:doc.将返回所有以doc结尾的文件URL.
当然如果你找.bak、.mdb 或.inc 也是可以的,获得的信息也许会更丰富:)
info:
查找指定站点的一些基本信息.
inurl:
搜索我们指定的字符是否存在于 URL 中.例如输入:inurl:admin,将返回 N 个类似于这样的连
接:http://www.xxx.com/xxx/admin,用来找管理员登陆的 URL 不错.allinurl 也同 inurl 类似,可指
定多个字符.
link:例如搜索:inurl:www.xxx.com 可以返回所有和 www.xxx.com 做了链接的 URL.
site:
这个也很有用,例如:site:www.xxx.com.将返回所有和 xxx.com 这个站有关的 URL.
对了还有一些操作符也是很有用的:
+把 google 可能忽略的字列如查询范围
-把某个字忽略
~同意词
.单一的通配符
*通配符,可代表多个字母
""精确查询
下面开始说说实际应用(我个人还是比较习惯用 google.com,以下内容均在 google 上搜索),
对于一个居心叵测的攻击者来说,可能他最感兴趣的就是密码文件了.而 google 正因为其强
大的搜索能力往往会把一些敏感信息透露给他们.用 google 搜索以下内容:
intitle:"indexof"etc
intitle:"Indexof".sh_history
intitle:"Indexof".bash_history
intitle:"indexof"passwd
intitle:"indexof"people.lst
intitle:"indexof"pwd.db
intitle:"indexof"etc/shadow
intitle:"indexof"spwd
intitle:"indexof"master.passwd
intitle:"indexof"htpasswd
"#-FrontPage-"inurl:service.pwd
有时候因为各种各样的原因一些重要的密码文件被毫无保护的暴露在网络上,如果被别有用
心的人获得,那么危害是很大的.下面是我找到的一个 FreeBSD 系统的 passwd 文件(我已做过
处理):
同样可以用 google 来搜索一些具有漏洞的程序,例如 ZeroBoard 前段时间发现个文件代码泄
露漏洞,我们可以用 google 来找网上使用这套程序的站点:
intext:ZeroBoardfiletype:php
或者使用:
inurl:outlogin.php?_zb_path=site:.jp
来寻找我们所需要的页面.phpmyadmin 是一套功能强大的数据库操作软件,一些站点由于配
置失误,导致我们可以不使用密码直接对 phpmyadmin 进行操作.我们可以用 google 搜索存
在这样漏洞的程序 URL:intitle:phpmyadminintext:Createnewdatabase
还记得 http://www.xxx.com/_vti_bin/..%5C..%5C....m32/cmd.exe?dir 吗?用 google 找找,你也
许还可以找到很多古董级的机器。同样我们可以用这个找找有其他 cgi 漏洞的页面。
allinurl:winntsystem32
可以用google来搜索数据库文件,用上一些语法来精确查找能够获得更多东西(access 的数据库,mssql、mysql 的连接文件等等).举个例子示例一下:
allinurl:bbsdata
filetype:mdbinurl:database
filetype:incconn
inurl:datafiletype:mdb
intitle:"indexof"data//在一些配置不正确的 apache+win32 的服务器上经常出现这种情况
和上面的原理一样,我们还可以用 google 来找后台,方法就略了,举一反三即可,毕竟我写这篇
文章的目的是让大家了解 googlehacking,而不是让你用 google 去破坏.安全是把双刃剑,关键
在于你如何去运用罢了.
利用 google 完全是可以对一个站点进行信息收集和渗透的,下面我们用 google 对特定站
点进行一次测试。以这个例子:www.xxx.com
首先用 google 先看这个站点的一些基本情况(一些细节部分就略去了):
site:xx.com
从返回的信息中,有时候可以找到多个该站点多级域名。

2、利用shodan、Zoomeye(钟馗之眼)等:

3、通过利用天眼查,企业信用信息公示系统,工业和信息化部ICP/IP地址/域名信息备案管理系统:

4、利用查看whois信息:

常用的工具有:站长工具、爱站、微步在线等;

5、Nslookup的用法:

例如查询baidu使用的DNS服务器名称;

6、子域名收集:

常用的工具有子域名挖掘机Layer、subDomainsBrute、Dnsenum、Dnsmap等等;

7、查看真实IP获取:

由于现在大多数的网站都开启了CDN加速,导致我们获取到的IP地址不一定是真实的IP地址;

8、指纹识别:

可以通过识别目标网站所使用的具体操作系统、CMS内容管理系统、服务器与中间件等信息,可以帮助我们进一步了解渗透测试环境,可以利用已知的一些CMS漏洞或中间件漏洞等来进行一系列的渗透工作;

9、端口扫描:

(1)、可以通过Nmap(Nmap是一个网络连接端口扫描工具,用来扫描网上的电脑具体开放的网络连接端口。可以确定哪些服务运行在哪些的连接端口上,并且可以推断计算机运行哪个操作系统。所以它是网络安全管理人员必用的软件之一,甚至用以评估网络系统安全);

(2)、通过masscan(masscan是网络安全中常用的技术手段,通过对于特定的IP范围和端口范围进行穷举扫描,发现网络中开放的端口,从而为进一步的探查提供基本信息);

可以通过以上等两种工具进行扫描探测,尽可能多的搜集开启的端口,以及对应的服务版本,在得到确切的服务版本之后,进而可以搜索有没有对应版本的漏洞;

10、旁站C段查询:

可以通过K8_C段旁注工具、WebRobot、御剑,Cain、Sniffit 、Snoop、Tcpdump、Dsniff等工具进行查询;

11、对于web站点:

可以通过查看网站robots.txt,crossdomin.xml,sitemap.xml,源码泄漏等等文件;

12、WAF信息及其他:

对于WAF的识别,大多基于Headers头信息,可以使用Wafw00f,Sqlmap的waf脚本,Nmap的http-waf-detect 和 http-waf-fingerprint等等脚本,以及没讲到的,具体的先讲到这些,以及关于IPtable防火墙设置的,改天抽空也一点写一写;

二、主要工具:

这里以Kali系统为主要工具,Kali的具体安装步骤这里我跳过了,主题不是介绍如何安装的,请见谅。这里介绍下Kali自带了python版本。

#默认Python版本切换:

再Kali终端输入以下两条命令:

update-alternatives –install /usr/bin/python python /usr/bin/python2 100

update-alternatives –install /usr/bin/python python /usr/bin/python3 150

终端查询此时的版本,发现切换为python3.8.6的版本(150比100优先级高)。

三、踩点:

根据以上信息收集方法中所提到的,列几个说明下:

1、使用搜索引擎:

搜索引擎使用爬虫对网站的信息进行爬取,能够收集一些我们在站点上找不到的信息,不同搜索引擎的爬虫能力不一样,google爬虫较强 能够使用谷歌尽量使用谷歌,毕竟是搜索引擎界的老大哥。

常见使用方式:
1、搜索站点入口;
2、其他不小心暴露的信息。

2、dns解析:

确定某个域名对应的ip地址范围
1、dnsenum --enum + <域名>;
2、nslookup + <域名>;
3、whois + <域名>。
whois 是一个行业标准的协议,能够通过互联网上面已有数据库查询某个域名的信息。

3、网络拓补结构:

traceroute(路由跟踪)+
查看 从当前机器到目标ip中间经过的路由的地址。
原理:利用IP报文的TTL字段,设置为 1 设置为2 .... 发送报文路由器获取到ip报文,将IP报文的ttl -1 ,当ttl为0的时候就返回一个ICMP报文给源主机,源主机就明确报文到达了哪台路由器。
tcptraceroute 和traceroute的区别在于:
1、traceroute 发送的是 ICMP 报文;
2、tcptraceroute 发送的是 TCP 第一次握手包。
对方防火墙的策略,可能防止ICMP报文进入,但是允许 TCP 握手包通过。

四、查点:

telnet + + <端口号> 跟某个服务器对应的端口号进行三次握手,握手完成后可以发送一些数据给服务器。

检测在线存活:
ping + -c <发送报文的数量,不填会一直发送> 为了不给机器造成破坏,建议设置数量。
比如:ping baidu.com -c 5
1、-I <网卡名> 从哪块网卡发送数据出去 比如eth0;
2、-s <包大小> ping发送的每个数据报文的长度 (如果数据太长,会有攻击嫌疑 ping attack)。

注:(知道有这个功能即可,不建议拿来乱用,仅为测试)

如果对方能够返回,说明是在线存活,如果不返回,也不能说明对方没有在线存活,使用其他工具进行检测,如以下三种方式:

1、arping:
使用arp协议对目标机器进行在线存活检测。
条件:目标机器跟当前主机必须在同一个内网,arp协议只在同一个网段使用;
特点:arping 对方存活情况下必须响应,不能关闭 TCP/IP协议栈决定的。
2、fping ....
同时对多台主机进行检测。
fping -g 192.168.39.0/24 对一个网段的所有机器进行ping,如果存活,显示is alive,否则显示:is unreachable
3、nmap :
-sP 使用ping的方式确定目标机器在线存活。
可以指定某个特定ip,也可以指定一个网段 192.168.37.0/24
不填任何参数
对目标机器的常用1000个端口进行扫描。
nmap -p 端口号 (端口1-端口2区间) 地址。
比如:nmap -p0-65535 ip地址。

-sV 服务器的指纹识别:
识别某个服务具体的服务器软件版本号等信息。
-O 识别目标机器的操作系统类型:
-sT : tcp connect扫描方式:
正常的TCP端口探测 ,使用网络编程 connect api 完成三次握手。判断对@方该端口是TCP服务的端口,完成三次握手,服务器是有感觉的, accept 有返回的。
-sS : syn扫描 :
也是探测TCP服务,但是跟-sT,有区别,只发送第一次握手包,观察回不回第二次握手,而不回则完成第三次握手。
root权限(原始套接字)。
-sU : udp扫描方式:
原理:发送一些UDP报文到目的端口。
1、对方不回应,应该启动了UDP;
2、对方回应一些ICMP报文,端口不可达,UDP服务没启动;
3、RST,TCP报文。
p0f 被动式的系统探测:
p0f -i <网卡名> -f <指纹文件,通常使用/etc/p0f/p0f.fp>
比如:p0f -i eth0 -f /etc/p0f/p0f.fp

总结:信息收集及扫描的工作是比较累而枯燥的,也是安全领域前期必备的基本技能,所以需要去不断的多动手实践和学习,去找到合适自己的、最新的且高效率的方法和套路。能在各种环境下做到熟能生巧,不怕你的手段有多么的猥琐,越是找得快找得精准,就是牛逼。当然,最重要的一点是要遵守法律法规,做到合理合法,踏踏实实的做一个白帽子。