• 【技巧总结】Penetration Test Engineer[2]-Information gathering


    2、信息收集

    信息收集是属于前期交互阶段所需要了解的问题。

    2.1、前期交互内容

    • 签署授权文件:首要要和受测试方签订授权协议。

    • 划定范围:指定了一个二级域名作为测试目标,那么其他二级域名在测试范围内。如果测试目标是在其他服务厂商,或者服务器上有其他额外的测试目标是否划入范围内。

    • 情报搜集:开放渠道情报、网络踩点、识别目标防护机制(管理、网络、主机、应用)。

    2.2、开放渠道情报

    • 数据来源:搜索引擎提供的开放情报、社交网站、地方性门户、电子邮件服务提供商
    • 关注点:企业情报、个人情报

    2.3、网络踩点

    • 创建目标列表:存活主机/版本信息/识别补丁级别/搜索脆弱的Web应用/确定封禁阈值/出错信息/可以攻击的脆弱端口/过时系统/虚拟化平台和虚拟机/存储基础设施
    • 深度挖掘目标细节:端口扫描/SNMP探查/区域传送/SMTP反弹攻击/解析DNS与递归DNS服务器

    2.4、踩点工具与方式

    • whois:查询域名注册信息库、服务商、管理员邮箱地址、域名注册日期和过期日期
    • nslookup:查询DNS解析信息
    • GEOIP:根据IP定位经纬度,通过Google地图获取位置信息。
    • Netcraft:查询DNS与IP信息分析,可以获取子站点、地理位置、DNS服务器地址、操作系统类型、服务器运行状况。
    • IP反查:通过IP地址可以反查指向同一IP的DNS信息(旁站攻击)。www.ip-adress.com/reverse_ip/、http://s.tool.chinaz.com/same
    • Google:GHDB(GoogleHackingDatabase)http://www.exploit-db.com/google-dorks/
    • 列目录查找:Google搜索【intitle:parent directory】
    • 查找敏感文件:Google搜索【Site:testfire.net filetype:xls】
    • 登录页面:Google搜索【site:test.com login】
    • 网络空间搜索引擎:fofa.so、ZoomEye、netcraft等
    • ping:测试主机是否活跃
    • nmap:端口扫描工具

    2.5、漏洞扫描工具

    • 主机漏洞扫描器:Nessus、OpenVAS、Nexpose、nmap
    • 应用漏洞扫描器:AppScan、Burpsuite、AcunetixAWVS、W3AF
    • nmap脚本:nmap -p 445 --script smb-vuln-ms17-010 10.10.10.1/24

    2.6、信息收集关注的常见端口(服务)

    • WEB 80
    • MSSQL 1433
    • MySQL 3306
    • Oracle 1521
    • Microsoft SMB 445
    • VNC 5900,5901
    • Remote Desktop 3389

    2.7 口令生成器

    • cupp

    2.8 常用工具用法

    1)NMAP

    nmap在kail中已经安装好了,直接调用就可以。

    • 默认扫描
    nmap 172.18.0.18
    
    • 网段扫描
    nmap 172.18.0.0/24
    
    • 扫描多个目标
    nmap 172.18.0.2 172.18.0.11
    
    • 详细描述输出扫描

    加上-v参数进行详细的扫描日志输出

    nmap -v 172.18.0.0/24
    
    • 指定端口扫描

    使用-p 端口可以进行指导的端口扫描。

    nmap -p 80,22 172.18.0.0/24
    

    扫描端口的时候还可以指定端口的范围进行扫描:
    扫描同网段中开启20-100端口范围的的ip

    nmap -p20-100 172.18.0.0/24
    
    • 从文件中读取ip扫描
    nmap -iL ip.txt
    
    • 设置黑名单扫描ip

    nmap可以设置黑名单扫描,不扫描敏感的ip,使用-exclude参数,进行单个ip的排除扫描

    nmap 172.18.0.0/24 -exclude 172.18.0.1
    
    • sP Ping扫描

    使用-sP参数,对内网主机进行探测发现

    nmap -sP 172.18.0.0/24
    
    • PN 不进行Ping扫描

    使用-PN参数,对内网进行No Ping扫描,PN No Ping 扫描,常用来绕过防火墙的检测。

    • sS 半开放式扫描

    使用-sS参数,对内网进行半开放式扫描。

    若端口扫描没有完成一个完整的TCP连接,在扫描主机和目标主机的一指定端口建立连接时候只完成了前两次握手,在第三步时,扫描主机中断了本次连接,使连接没有完全建立起来,这样的端口扫描称为半连接扫描,也称为间接扫描。现有的半连接扫描有TCPSYN扫描和IP ID头dumb扫描等。

    • sT TCP扫描

    使用-sT参数,对内网进行TCP扫描

    • sU UDP扫描

    使用-sU参数,对目标靶机进行UDP扫描:

    nmap -sU 172.18.0.16
    

    因为一般情况下这个-sU扫描是测试某个单独的UDP端口是否正常通讯,所以一般-sU常与-P指定端口扫描参数配合使用:

    nmap -sU -p 22,80 172.18.0.16
    
    • sF FIN标志的数据包扫描

    使用-sF参数,对内网进行FIN标志的数据包扫描,探测防火墙的状态,收到RST回复说明该端口关闭,否则说明是open或filtered状态。

    nmap -sF 172.18.0.16
    
    • sV Version版本检测扫描
    nmap -sV 172.18.0.16
    
    • O OS操作系统类型的探测
    nmap -O 172.18.0.16
    

    这里还可以使用--osscan-guess参数来猜测匹配的操作系统

    nmap -O --osscan-guess 172.18.0.16
    
    • traceroute 路由跟踪扫描

    如果对外围的目标进行扫描的话,效果要好一点。

    nmap -traceroute 172.18.0.2
    
    • A 综合扫描
    nmap -A 172.18.0.2
    
    • 常见混合参数

    探测同网段开着80端口的ip,并进行系统猜测扫描,并将过程-v详细输出。

    nmap -v -p 80 -O --osscan-guess 172.18.0.0/24
    

    对内网同网段的主机进行批量收集,只收集开了80和22端口的ip

    nmap -sS -p 22,80 172.18.0.0/24
    

    FIN扫描出内网中网段中开启MySQL数据库的所有主机

    nmap -sF -p3306 172.18.0.0/24
    
    • oN 标准输出

    将标准输出直接写入指定的文件,对目标靶机的扫描结果以标准的形式导出为result.txt。

    nmap -oN result.txt 172.18.0.3
    
    • oX XML输出

    XML提供了可供软件解析的稳定格式输出.

    nmap -oX result.xml 172.18.0.3
    
    • oS ScRipT KIdd|3 oUTpuT

    脚本小子输出类似于交互工具输出,这是一个事后处理,适合于 'l33t HaXXorZ, 由于原来全都是大写的Nmap输出。这个选项和脚本小子开了玩笑,看上去似乎是为了 “帮助他们”。

    nmap -oS result.xml 172.18.0.3
    
    • oG Grep输出

    Grep输出是一种简单格式,每行一个主机,可以 通过UNIX工具(如grep、awk、cut、sed、diff)和Perl方便地查找和分解。

    nmap -oG result.txt 172.18.0.3
    
    • oA 输出至所有格式

    利用-oA选项 可将扫描结果以标准格式、XML格式和Grep格式一次性输出。分别存放在 .nmap,.xml和 .gnmap文件中。

    nmap -oA resut 172.18.0.3
    
    • NMAP设置时间参数模板

    paranoid、sneaky 模式用于IDS躲避

    Polite 模式降低了扫描 速度以使用更少的带宽和目标主机资源。

    Normal 为默认模式,因此-T3 实际上是未做任何优化。

    Aggressive 模式假设用户具有合适及可靠的网络从而加速扫描。

    insane 模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。

    【-T0 paranodi】

    用于躲避IDS进行扫描,耗时非常的长。

    nmap -T0 172.18.0.3
    

    【-T1 sneaky】

    用于躲避IDS进行扫描,耗时非常的长。

    nmap -T1 172.18.0.3
    

    【-T2 polite】
    降低了扫描速度以使用更少的带宽和目标主机资源进行对目标靶机进行扫描

    nmap -T2 172.18.0.3
    

    【-T3 normal】
    默认模式,因此-T3 实际上是未做任何优化的扫描目标靶机

    nmap -T3 172.18.0.3
    

    【-T4 Aggressive】

    假设用户具有合适及可靠的网络从而加速对目标靶机的扫描。

    nmap -T4 172.18.0.3
    

    【-T5 insane】

    假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性的对目标靶机进行扫描。

    nmap -T5 172.18.0.3
    
    • NMAP调用脚本进行扫描
    nmap 的脚本分类
    - auth: 负责处理鉴权证书(绕开鉴权)的脚本
    - broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
    - brute: 提供暴力破解方式,针对常见的应用如http/snmp等
    - default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
    - discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
    - dos: 用于进行拒绝服务攻击
    - exploit: 利用已知的漏洞入侵系统
    - external: 利用第三方的数据库或资源,例如进行whois解析
    - fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 
    - intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
    - malware: 探测目标机是否感染了病毒、开启了后门等信息
    - safe: 此类与intrusive相反,属于安全性脚本
    - version: 负责增强服务与版本扫描(Version Detection)功能的脚本
    - vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
    

    【nmap 脚本使用格式】

    nmap具体的漏洞扫描脚本参考官方文档 : https://nmap.org/nsedoc/

    nmap --script='$类别/$具体的脚本'
    

    【脚本格式进阶】

    -sC                             根据端口识别的服务,调用默认脚本
    --script=”Lua scripts”          调用的脚本名
    --script-args=n1=v1,[n2=v2]     调用的脚本传递的参数
    --script-args-file=filename     使用文本传递参数
    --script-trace                  显示所有发送和接收到的数据
    --script-updatedb               更新脚本的数据库
    --script-help=”Lua script”      显示指定脚本的帮助
    

    尝试对模板靶机进行-sC扫描,根据端口识别服务自动调用默认脚本。

    nmap -sC 172.18.0.10
    

    【常用脚本扫描】

    由于内网靶机开启的端口很少,服务也很少,脚本扫描没有太多的用武之地。下面写一些常见的调用脚本扫描以作了解使用。

    对MySQL进行暴力破解

    nmap --script=mysql-brute <target>
    3306/tcp open  mysql
    | mysql-brute:
    |   Accounts
    |     root:root - Valid credentials
    

    对MsSQL进行暴力破解

    nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt <host>
    | ms-sql-brute:
    |   [192.168.100.128TEST]
    |     No credentials found
    |     Warnings:
    |       sa: AccountLockedOut
    |   [192.168.100.128PROD]
    |     Credentials found:
    |       webshop_reader:secret => Login Success
    |       testuser:secret1234 => PasswordMustChange
    |_      lordvader:secret1234 => Login Success
    

    对Oracle数据库进行暴力破解

    nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL <host>
    PORT     STATE  SERVICE REASON
    1521/tcp open  oracle  syn-ack
    | oracle-brute:
    |   Accounts
    |     system:powell => Account locked
    |     haxxor:haxxor => Valid credentials
    |   Statistics
    |_    Perfomed 157 guesses in 8 seconds, average tps: 19
    

    对PgSQL的暴力破解

    nmap -p 5432 --script pgsql-brute <host>
    5432/tcp open  pgsql
    | pgsql-brute:
    |   root:<empty> => Valid credentials
    |_  test:test => Valid credentials
    

    利用DNS进行子域名暴力破解

    nmap --script dns-brute www.baidu.com
    
    Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 13:12 ?
    Nmap scan report for www.baidu.com (180.97.33.108)           
    Host is up (0.018s latency).                                 
    Other addresses for www.baidu.com (not scanned): 180.97.33.10
    Not shown: 998 filtered ports                                
    PORT    STATE SERVICE                                        
    80/tcp  open  http                                           
    443/tcp open  https                                          
    
    Host script results:                                         
    | dns-brute:                                                 
    |   DNS Brute-force hostnames:                               
    |     admin.baidu.com - 10.26.109.19                         
    |     mx.baidu.com - 61.135.163.61                           
    |     svn.baidu.com - 10.65.211.174                          
    |     ads.baidu.com - 10.42.4.225                                         ...    
      ...                                                           
    Nmap done: 1 IP address (1 host up) scanned in 92.64 seconds
    

    查询VMware服务器(vCenter,ESX,ESXi)SOAP API以提取版本信息。

    nmap --script vmware-version -p443 10.0.1.4
    
    Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 12:26 ?D1ú±ê×?ê±??
    Nmap scan report for 10.0.1.4
    Host is up (0.0019s latency).
    
    PORT    STATE SERVICE
    443/tcp open  https
    | vmware-version:
    |   Server version: VMware ESXi 6.5.0
    |   Build: 4887370
    |   Locale version: INTL 000
    |   OS type: vmnix-x86
    |_  Product Line ID: embeddedEsx
    Service Info: CPE: cpe:/o:vmware:ESXi:6.5.0
    
    Nmap done: 1 IP address (1 host up) scanned in 6.28 seconds
    

    2)BurpSuite

    Burp Suite是一个Web应用程序集成攻击平台,它包含了一系列burp工具,这些工具之间有大量接口可以互相通信,这样设计的目的是为了促进和提高整个攻击的效率。平台中所有工具共享同一robust框架,以便统一处理HTTP请求,持久性,认证,上游代理,日志记录,报警和可扩展性。 Burp Suite允许攻击者结合手工和自动技术去枚举、分析、攻击Web应用程序。这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。

    Proxy 提供一个直观、友好的用户界面,他的代理服务器包含非常详细的拦截规则,并能准确分析HTTP 消息的结构与内容。

    Spider 爬行蜘蛛工具,可以用来抓取目标网站,以显示网站的内容,基本结构,和其他功能。

    Scanner Web 应用程序的安全漏洞进行自动发现工具。它被设计用于渗透测试,并密切与您现有的技术和方法,以适应执行手动和半自动化的Web 应用程序渗透测试。

    Repeater 可让您手动重新发送单个HTTP 请求

    Intruderburp 套件的优势,他提供一组特别有用的功能。它可以自动实施各种定制攻击,包括资源枚举、数据提取、模糊测试等常见漏洞等。在各种有效的扫描工具中,它能够以最细化、最简单的方式访问它生产的请求与响应,允许组合利用个人智能与该工具的控制优点。

    Sequencer 对会话令牌,会话标识符或其他出于安全原因需要随机产生的键值的可预测性进行分析。

    Decoder 转化成规范的形式编码数据,或转化成各种形式编码和散列的原始数据。它能够智能识别多种编码格式,使用启发式技术。

    Comparer 是一个简单的工具,执行比较数据之间的任何两个项目(一个可视化的“差异”)。在攻击一个Web 应用程序的情况下,这一要求通常会出现当你想快速识别两个应用程序的响应之间的差异(例如,入侵者攻击的过程中收到的两种反应之间之间,或登录失败的反应使用有效的和无效的用户名)之间,或两个应用程序请求(例如,确定不同的行为引起不同的请求参数)。

    Burp Target 组件主要包含站点地图、目标域2部分组成,他们帮助渗透测试人员更好地了解目标应用的整体状况、当前的工作涉及哪些目标域、分析可能存在的攻击面等信息。

    3)SQLMAP

    练习SQL注入可以使用sqli-labs

    • GET注入
    # 测试注入
    sqlmap.py -u "url"
    # 获取数据库
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --dbs
    # 获取当前使用的数据库 --current-db
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --current-db
    # 获取数据表,-D为数据库名
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" -D "security" --tables 
    # 获取数据库列名,-T为数据库表名
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" -D "security" -T "users" --columns
    # 获取指定字段的值
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" -D "security" -T "users" --dump -C"id,username,password" 
    # 语句总结
    -u 指定目标url
    --dbs 列出数据库系统中的数据库
    --current-db 列出当前使用的数据库
    --tables 列出数据库中的数据表
    --columns 列出数据表中的字段
    --dump 获取指定的数据
    
    • POST注入-自动获取表单
    # 自动获取form表单测试
    sqlmap.py -u "http://172.18.0.2/Less-11/" --forms
    # 使用--dbs列出数据库系统所有数据库
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --dbs
    # 使用--current-db列出系统当前数据库
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --current-db
    # 列出数据库中的数据表
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --tables -D "security"
    # 使用--columns列出表中的字段
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --columns -D "security" -T "users"
    # 使用--dump获取字段中的数据
    sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --dump -C"id,username,password" -D "security" -T "users"
    
    • POST注入-从文件中加载HTTP请求

    配置代理,使用BurpSuite抓取数据包,【Copy file】保存至桌面为xx.txt

    GET /Less-1/?id=1 HTTP/1.1
    Host: 172.18.0.10
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    Cache-Control: max-age=0
    

    使用-r文件中加载HTTP请求

    sqlmap.py -r C:UsersadminDesktopxx.txt
    
    • 绕过WAF

    SQLMap下有一个名为tamper的目录,里面为绕过waf的脚本,使用--tamper选项可以使用。

    示例为:(宽字节注入)绕过,

    sqlmap.py -u "http://172.18.0.2/Less-32/?id=1" --batch -v 3 --tamper "unmagicquotes.py"
    

    4)Metasploit

    msfconsole进入界面,Metasploit的辅助模块中提供了几款实用的端口扫描器。在线手册

    https://www.offensive-security.com/metasploit-unleashed/

    • 常用命令使用方法
    search 搜索模块
    use 利用模块
    show options 显示模块需要的参数
    set 设置参数
    run 启动 
    
    • 主机扫描

    Metasploit中提供了辅助模块用于活跃主机的探测,这些模块位于Metasploit源码路径的modules/auxiliary/scanner/discovery/目录中,主要有以下几个:

    arp-sweep
    ipv6_multicast_ping
    ipv6_neighbonip
    ipv6_neighbor_router_advertisement
    udp_probe
    udp_sweep
    
    两个常用模块的说明如下:
    
    arp-sweep:使用ARP请求枚举本地局域网络中的所有活跃主机。
    udp-sweep通过发送UDP数据包探查指定主机是否活跃,并发现主机上的UDP服务。
    

    在TCP/IP网络环境中,一台主机在发送数据帧前需要使用ARP(Address Resolution Protocol,地址解析协议)将目标地址转换成MAC地址,这个转换过程是通过发送一个ARP请求来完成的。如IP为A的主机发送一个ARP请求获取IP为B的MAC地址,此时如果IP为B的主机存在,那么它会向A发出一个回应。因此,可以通过发送ARP请求的方式很容易地获取同一子网上的活跃主机情况,这种技术也称为ARP扫描。

    • 口令嗅探爆破

    msf中与嗅探相关的模块可以通过sniffer搜索,

    psnuffle 口令嗅探

    >use auxiliary/sniffer/psnuffle
    >show options
    >run
    

    ssh_login 口令爆破

    >use auxiliary/scanner/ssh/ssh_login
    >set RHOSTS 172.18.0.6
    >set THREADS 50
    >set PASS_FILE /usr/share/wordlists/sqlmap.txt
    >set USERNAME root
    >run
    
    • Meterpreter

    一个用于后渗透测试的辅助模块,可以生成可执行文件对目标主机进行一系列操作。

    1、clearev命令:清除入侵痕迹
    2、timestomp命令:改变文件的修改或访问时间
    
  • 相关阅读:
    JS实现继承,封装一个extends方法
    JS实现new关键字的功能
    前端常见原生方法的实现(bind,promise,new,extends,深拷贝,函数防抖,函数节流)
    Nodejs ORM框架Sequelize快速入门
    Nodejs ORM框架Sequelize(模型,关联表,事务,循环,及常见问题)
    NodeJs mysql 开启事务
    web开发的跨域问题详解
    docker网络
    docker容器的学习
    路飞学城的部署
  • 原文地址:https://www.cnblogs.com/17bdw/p/9723314.html
Copyright © 2020-2023  润新知