社会工程学活动对于企业来说一直都是很大的,因为这种手段针对的是整个安全环节中最薄弱的一环:人。在一般的场景中,者会窃取目标用户的用户名和密码,并存储下来以备后续使用,而双因素身份验证(2FA)或者多因素身份验证(MFA)就是专门应对这类的。
2FA相当于在普通的用户名和密码之上又加了一层验证机制,最常见的两种2FA是一次性密码和推送通知。一次性密码是由一种二级设备生成的,比如说密码生成器,这种设备是跟用户绑定的。这种密码一般会在30秒到60秒之后过期,并且不可重复使用。推送通知需要给用户的移动设备发送确认请求,用户确认之后便可成功登录。因此,这两种方法可以有效防止传统的钓鱼活动。
虽然安全专家强烈个人或商业软件采用2FA,但是这并不是一种可靠的解决方案,因为实时钓鱼技术可以轻松打败2FA。这种钓鱼技术需要涉及者跟目标用户之间的实时交互,比如说在钓鱼网站会提示用户输入用户名、密码和一次性密码,点击登录之后会显示一个登录成功页面,但是这个一次性密码并没有被使用,而是发送到了者手中。此时,者就会有一个非常短的时间窗口并在用户凭证过期之前去使用它了。
很多者在社工活动中都会使用这些技术,而且早在2010年就已经出现了实时钓鱼了。但是这种类型的在很大程度上却被人们忽略了,因为这种的实施难度非常大。本文的目的就是让人们改变这种观念,并让人们意识到这个问题,然后鼓励安全社区去研发新的解决方案。
为了提升社工技术评估的能力,我们研发了一款名叫ReelPhish的工具,而这款工具可以简单演示实时钓鱼技术。该工具的主要组件运行在者的系统中,它运行了一个Python脚本并实时者所搭建的钓鱼网站,并使用了Selenium框架来驱动Web端。该工具能够控制者的Web浏览器并访问特定Web页面、跟HTML对象交互、以及爬取内容。
ReelPhish的二级组件就是钓鱼网站本身,嵌入在钓鱼网站中的代码可以将捕捉到的用户凭证发送到者的设备中。当钓鱼工具收到凭证之后,它会使用Selenium来启动浏览器,并在网站上使用凭证完成登录。钓鱼网站服务器跟者系统之间的所有通信都是通过加密SSH信道完成的。
ReelPhish由两部分组成:钓鱼网站处理代码以及Python脚本。钓鱼网站可以根据需求来设计,PHP样本代码在GitHub代码库的/examplesitecode目录中,样本代码的功能是将用户名和密码从HTTP POST请求中提取出来并发送给Python钓鱼脚本。钓鱼脚本会一个本地端口,并等到包含凭证的数据包抵达。抵达之后,钓鱼脚本会打开一个新的浏览器窗口实例,然后访问特定的URL地址,并使用浏览器提交收集到的凭证。
网友评论 ()条 查看