第1节 教材学习内容总结
本周学习了教材第五、六章的内容。
1.TCP/IP网络协议攻击
1.1 TCP/IP网络协议栈攻击概述
网络安全属性:机密性、完整性、可用性、真实性、不可抵赖性。
网络攻击模式:4种
模式 网络攻击模式 破坏性质 攻击技术 被动攻击 截获 机密性 嗅探、监听 主动攻击 篡改 完整性 数据包篡改、中间人攻击 主动攻击 中断 可用性 拒绝服务 主动攻击 伪造 真实性 欺骗
- 安全缺陷与攻击技术
- 原始报文伪造技术及工具
最流行的是欺骗技术——使用原始套接字(raw socket),绕过TCP/IP协议栈的报文封装处理和验证,构造出任意的数据报文。
工具包括netwox/netwag等。
1.2 网络层协议攻击
- ip源地址欺骗(ip spoofing)
原理:攻击者伪造具有虚假源地址的ip数据包进行发送,以达到隐藏发送者身份、假冒其他计算机等目的。常用于拒绝服务攻击,nmap的-D选项就是用来配置假冒源IP地址的,操作见149页。
原因:ip协议在设计时只是用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。
步骤:
1.对受信任主机进行拒绝服务攻击,使其丧失工作能力,避免在接收到响应包之后影响欺骗过程; 2.对目标主机的TCP初始序列号(ISN)进行取样和猜测; 3.伪造源地址为受信任主机IP的SYN数据包,发送给目标主机; 4.等待目标主机将SYN/ACK包发送给已瘫痪的受信任主机; 5.再次伪装成被信任主机向目标主机发送ACK包; 6.连接建立,假冒被信任主机与目标主机进行通信;
防范:
1.随机化初始序列; 2.使用网络安全传输协议(IPsec); 3.避免基于IP地址信任策略; 4.在路由器和网关上实施过滤包机制;
"盲攻击"的概念。
- ARP欺骗攻击
概念:攻击者在有线以太网或无线网络上发送伪造ARP信息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
ARP协议工作原理:将网络主机的IP地址解析其MAC地址,然后在局域网内通过MAC地址进行通信。
ARP欺骗攻击原理:认为局域网内的所有用户都是可信的,是遵循协议规范的。
防范:静态绑定关键主机IP地址和MAC地址映射关系、ARP防范工具、VLAN虚拟子网细分网络拓扑、加密传输数据。
查找欺骗攻击源工具:LANSEE、nbtscan、anti arp、sniffer。操作见154页。
- ICMP路由重定向攻击
概念:是指攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者制定的路由路径,从而进行嗅探或假冒攻击的一种技术。
步骤:
1.攻击节点利用ip源地址欺骗技术,冒充网管ip地址,向被攻击节点发送icmp重定向报文,并将制定的新路由器ip地址设置为攻击节点; 2.被攻击节点在接收到该报文后,会进行限制条件检查,由于该报文并不违背限制条件,因此会被接收,被攻击节点选择攻击节点作为新路由器(即网关); 3.攻击节点可以开启路由转发,充当一个中间人,对被攻击节点与外部网络的通信进行全程嗅探监听,达到与arp欺骗蕾丝的攻击效果; 4.在转发过程中,根据icmp路由重定向机制的设计原理,由于从被攻击节点到外部网络存在更优的路由路径,即直接通过原先的网关进行路由较重定向后的路由路径少一跳,因此攻击节点协议栈可能会向被攻击节点发送一个icmp重定向报文,指定原先网关作为新路由器,这个报文将使欺骗路由路径还原至原先正常状态。
防范:根据类型过滤一些icmp数据包,设置防火墙过滤,对于icmp重定向报文判断是不是来自本地路由器等。
操作见159页。
1.3 传输层协议攻击
- TCP RST攻击
又称为伪造TCP重置报文攻击,假冒干扰TCCP通信连接的技术。TCP重置报文将直接关闭掉一个TCP会话连接。
- TCP会话劫持攻击
目标是劫持通信双方已建立的TCP会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行进一步通信。为攻击者提供了一种绕过应用层身份认证的技术途径。
防范措施:禁用主机上的源路由;采用静态绑定ip-mac映射表以避免arp欺骗;引用和过滤icmp重定向报文;采用网络层加密机制,即ipsec协议是对抗tcp会话劫持攻击最通用的办法。
- TCP SYN洪泛拒绝服务攻击
是目前比较有效而又非常难于防御的一种网络攻击方式,目的是使服务器不能够为正常访问的用户提供服务。
TCP SYN Flood又称泛洪攻击,是目前最为有效和流行的一种拒绝服务攻击形式,利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能为正常用户服务。
攻击主机向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。
利用Netwox进行TCP SYN Flood攻击。
SYN Flood攻击防范措施:SYN-Cookie技术、防火墙地址状态监控技术
- UDP洪泛拒绝服务攻击
向目标主机和网络发送大量UDP数据包,造成目标主机显著地计算负载提升,或者目标网络的网络拥塞,从而使目标主机和网络陷入不可用的状态,造成拒绝服务攻击。
TCP/IP网络协议栈攻击防范措施
检测、预防与安全加固 网络安全协议 下一代互联网协议
第2节 课堂测试——sql注入实验
1.实验准备
实验需要三样东西, Firefox、 apache、 phpBB2(镜像中已有)。
- 运行 Apache Server:镜像已经安装,只需运行命令 sudo service apache2 start
- phpBB2 web 应用:镜像已经安装,通过 http://www.sqllabmysqlphpbb.com 访问,应用程序源代码位于/var/www/SQL/SQLLabMysqlPhpbb/
- 配置 DNS:上述的 URL 仅仅在镜像内部可以访问,原因是我们修改了/etc/hosts文件使 http://www.sqllabmysqlphpbb.com 指向本机 IP 127.0.0.1。如果需要在其他机器访问,应该修改 hosts 文件,使 URL 映射到 phpBB2 所在机器的 IP。
- 关闭对抗措施:PHP 提供了自动对抗 SQL 注入的机制,被称为 magic quote,我们需要关闭它。输入命令sudo gedit /etc/php5/apache2/php.ini,将magic_quotes_gpc = On修改为magic_quotes_gpc = Off。 sudo service apache2 restart命令重启 Apache。
2.对select语句的攻击
首先访问虚拟机内的URL:www.sqllabmysqlphpbb.com。在进入 phpBB之前系统会要求你登陆。这个登陆认证由服务器上的 login.php 实现,需要用户输入用户名和密码来通过认证。用户键入用户名和密码后,login.php 会将它们与 mysql 数据库中的 username 和user_password 字段进行比较,如果匹配就登陆主界面。和其他大多数 web 应用程序一样,PHP程序使用 SQL 语言与背后的数据库交互。在 phpBB2 中,下面的语句实现了对用户的认证。
SELECT user_id,username,user_password,user_active,user_level,user_login_tries,user_last_login_try FROMUSERS_TABLE WHERE username=‟$username‟ANDuser_password=‟md5($password)‟; if(foundonerecord) then{allowtheusertologin}
正常情况下,如果输入错误的用户名或密码,肯定是登录不了的。但是对于有SQL注入漏洞的网站来说,只要构造特殊的“字符串”,就能够成功登录。如在用户名输入框中输入' or 1=1#,密码随便输入,此时合成的SQL查询语句为:select * from users where username='' or 1=1#' and password=md5('')。
“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,不会去执行。即select * from users where username='' or 1=1#' and password=md5('')等价于select * from users where username='' or 1=1,因为1=1永远成立的,即where子句总是为真,该sql语句进一步简化之后,等价于select * from users。
因此,这里我们输入ted'#,就可以在不知道ted密码的情况下登录了。
3.对 UPDATE 语句的攻击
当用户想要在 phpBB2 中修改他们的资料时,可以点击 Profile,然后填写表单修改。用户发送修改请求后,会执行include/usercp_register.php中的一条 UPDATE SQL 语句。在这条语句中同样有一个 SQL 注入漏洞。
下面演示以ted登陆,目标是修改admin的资料信息,包括他的密码。攻击成功后将可以登陆 Ted 的账号。
点击Memberlist查看admin的信息,可以看到一个带参数的脚本,猜测admin的id为2。
- 我们再在interests栏中输入1234'where user_id=2#,即将update语句中interests后的语句全部注释掉,并将where条件设置成admin的id。
- 再次点击Memberlist查看admin的信息,可以看到admin的interests改为1234。
Current password里输入ted密码(ted),New password里输入1,即可将admin的密码修改为1了。
4.对抗sql注入
- 使用magic_quotes_gpc避开特殊字符。修改/etc/php5/apache2/php.ini的magic_quotes_gpc = On,然后重启Apache。
- 使用addslashes()来避开特殊字符
使用mysql_real_escape_string避开特殊字符
第3节 kali视频(21-25)学习
21.密码攻击之在线攻击工具
- Cewl
爬行网站获取关键信息创建密码字典。
- CAT
很小的安全审计工具,扫描Cisco路由器的一般性漏洞:例如默认密码,SNMP community字串和一些老的IOS bug。
- Findmyhash
在线哈希破解工具,借助在线破解哈希网站的借口制作的工具。并不如国内的cmd5好用。
- 老牌破解工具HYDRA
破解单一用户则使用小写l,若要拆分用户则用大写L;同理若固定一个密码使用写小写p,一个文件则使用大写P。
使用参数简单易懂:
破解FTP服务:hydra -L user.txt -F ftp://127.0.0.1:21 破解SSH服务:hydra -L user.txt -F ssh://127.0.0.1:22 SMB:hydra -L user.txt -F ssh://127.0.0.1 破解MSSQL账号密码:hydra -L user.txt -F ssh://127.0.0.1:1433
猜解到用户名和密码可看到高亮显示。
service ssh status判断ssh服务是否打开
使用指令打开ssh服务
1.修改sshd_config文件,命令为:vi /etc/ssh/sshd_config 2.将#PasswordAuthentication no的注释去掉,并且将NO修改为YES //我的kali中默认是yes 3.将#PermitRootLogin yes的注释去掉 //我的kali中默认去掉了注释 4.启动SSH服务,命令为:/etc/init.d/ssh start // 或者service ssh start
hydra -l root -P -/pass.txt -F ssh://192.168.75.33:22 错误,没有密码表文件。
hydra-gtk图形化界面
Medusa
Medusa类似于Hydra的一款工具,使用方法类似。
Medusa -h 192.168.235.96 -u root -P //wordlists rockyou.txt -M ssh //-h 目标IP地址
选择不同服务只要修改-M后面的参数即可。
- NcRACK
NcRACK 相似的功能基本类似,但突出了RDP(3389)爆破功能,如使用命令:
ncrack -vv windows.pwd 192.168.1.101:3389,CL=1 -f
- onesixtyone
onesixtyone是一个snmp扫描工具,用于找出设备上的SNMP Comunity字串,扫描速度非常快。
- Patator
Patator是一款Python编写的多服务破解工具,如枚举一个服务用户名密码。
Patator ssh_login host=127.0.0.1 user=root password=FILE0 0=pass.txt -x ignore:mesg='Authenticaton failed.'
phrasen|drescher
phrasen|drescher多线程支持插件式的密码破解工具THC-PPTP-Bruter
22.密码攻击之离线攻击工具(一)
- creddump套件
Kali linux下离线攻击工具中的cache-dump、lsadump与pwdump均为creddump套件的一部分,基于python的哈希抓取工具。
- Chntpw
用来修改Window SAM文件实现系统密码修改、清除,亦可在kali作为启动盘时作删除密码的的用途。
- Crunch
实用的密码字典生成工具,可以指定位数生成暴力枚举字典。
- Dictstat(新版改名为pack)
是一款字典分析工具,可以分析出一个现有字典分布情况,也可按照一定的过滤器提取字典。同一项目下的工具还有MaskGen与PolicyGEN。
- Fcrackzip
kali下一款ZIP压缩包密码破解工具。
- Hashcat
强大的密码破解软件,系列软件包含Hashcat,oclHashcat,还有一个单独新出的oclRausscrack,其区别为Hashcat不支持GPU加速,oclGausscrack则支持GPU加速,速度显而易见,oclHashcat则分为AMD版和NAVID版。
- Hashid
简单易用的哈希分析工具,可以判断哈希或哈希文件是何种哈希算法加密的。
- HashIdentify
是一款Hashid类似的一款工具。
- John the ripper
老牌密码破解工具,常用于Linux shadow中账户的密码破解,社区版也支持MD5-raw等哈希的破解。有图形化版johnny。
图形化版本:23.密码攻击之离线攻击工具(二)
- Ophcrack
彩虹表(是一个用于加密散列函数逆运算的预先计算好的表)Windows密码哈希破解工具,对应有命令行版的ophcrack-cli。
- pyrit
是一款无线网络密码破解工具,借助GPU加速,可以让WPA2密码破解更效率。
- Rcrack
彩虹表密码哈希工具,使用了第一代彩虹表(RT格式),当然首先,我们要有足够容量的彩虹表,使用很简单,按照参数破解即可。
- rcracki_mt
又一款彩虹表哈希破解工具,不同的是此工具支持最新格式的彩虹表进行哈希破解。当然,彩虹表仍然是不可缺少的关键存在。
- rsmangler
字典处理工具,可以生成几个字串的所有可能组合形式,在生成社工字典时亦可用到。可以有选择性的关闭某些选项。
- Samdump2与BKhive
- SIPCrack
SIPCrack是针对SIP protocol协议数据包的破解工具,支持PCAP数据包与字典破解。
- SUCrack
使用su命令进行本地root账户的密码破解。
- Truecrack
一款针对TrueCrypt加密文件的密码破解工具。
24.密码攻击之哈希传递攻击
在Windows系统中,用户口令都是以哈希值的方式存储,在我们远程登录系统的时候,实际上向远程传输的就是密码的hash,当攻击者获取了存储在计算机上的用户名和密码的hash值的时候,他虽然不知道密码值,但是仍然可以通过直连远程主机,通过传送密码的hash值来达到登陆的目的。
- PTH套件
要进行哈希传递攻击,首先我们要有目标主机的哈希信息,以Pwdump7抓取hash为例,pth套件每个工具都针对win下响应的exe文件,如使用pth-winexe可以借助哈希执行程序得到一个cmdshell。
- Keimpx
一款Python编写的哈希传递工具,通过已有哈希信息get一个后门shell。
使用PWDUMP7抓取哈希,将文件保存至根目录,使用keimpx的-c参数作为文件凭据。
检测到Adminstrator可以进行哈希传递攻击,是否获得shell。
得到shell的端口号,如2090,可以nc 2090获得shell。
- Metasploit
模块exploit/windows/smb/psexec亦可完成HAsh传递攻击。
25.无线安全分析工具
Kali无线安全分析工具包括RFID/NFC工具集,软件定义无线工具,蓝牙Hack工具与常规无线网络分析工具。
- Aircrack
是一个与802.11标准的无线网络分析有关的安全软件,主要功能:网络侦测,数据包嗅探,WEP和WPA/WPA2-PSK破解,Aircrack-ng可以工作在任何支持监听模式的无线网卡上并嗅探802.11a,802.11b,802.11g的数据。该程序可运行在Linux和Windows上,Linux版本已经被移植到了Zaurus和Maemo平台上。
- Cowpatty
一款知名的WPA-PSK握手包密码破解工具。
- eapmd5pass
针对EAP-MD5的密码破解工具。
- 图形化的Fern WiFi Cracker
无线网络分析中如果要使用虚拟机中的kali Linux,则需要外置无线网卡。
- MDK3
是一款无线DOS攻击测试工具,能够发起Beacon Flood、Authentication DoS、Deauthentication/Disassociation Amok 等模式的攻击。另外还有其他针对隐藏ESSID的暴力探测模式,802.1x渗透测试,WIDS干扰等功能。
- wifite
自动化的无线网审计工具,可以自动化破解,Python脚本编写,结合Aircrack-ng套件与Reaver工具。
- Reaver
对开启WPS的路由器PIN码进行破解。