Skip to content

Kscan v1.50 他Lei了~

lcvvvv edited this page Jan 4, 2022 · 1 revision

写在前面的碎碎念

其实自在吐司发布v1.25版本之后,一直就不太想专门针对Kscan写东西了,主要是没有时间,不过趁着这次棱角搞活动,就再写一篇吧,现阶段的kscan还是比之前强大了很多的。

我对于kscan的定义其实是分两个层面的,第一个是做为红队的资产发现工具,从使用fofa关键字检索资产,在自动化进行端口扫描和指纹识别(当然,端口扫描是可选项),到最终发现重点资产,为后续的攻击提供信息。另一个是在已经打点成功之后,自动化进行存活网段探测、然后进行指纹是被、以及常见,易获取权限的漏洞扫描(主要是弱口令、RCE等)。

那么接下来就让我来分这两个层面介绍一下全新Kscan v1.5吧~

互联网面资产发现

首先,作为红队,往往我们需要通过搜索引擎、企业关系等方面初步确定目标的域名、关键字等内容,然后通过fofa、zoomeye来进行检索,在这个检索过程中,实际上是存在这很多重复、繁琐的工作的,比如当你从fofa找到一个质量很可以的关键字,发现了很多可疑的IP资产,这个时候你就会使用某个工具或者脚本导出地址清单,然后再使用某些指纹识别工具对这些地址进行指纹识别。

但这个过程现在在kscan会变得相当容易

配置FOFA

是的,最终Kscan还是增加了Fofa模块,要使用此模块,需要事先配置环境变量:

export FOFA_EMAIL=abcdefg@gmail.com
export FOFA_KEY=****************348dc164c87e4d5a

然后使用kscan -f 参数即可直接调取Fofa结果

image-20210915153928393

当然关于Fofa模块还有更多的可配置参数便于使用

--fofa-syntax  将获取fofa搜索语法说明
--fofa-size    将设置fofa返回条目数,默认100条
--fofa-field   可设置fofa搜索返回结果的字段排列顺序,默认排列顺序为:title,host,ip,port
--fofa-fix-keyword 修饰keyword,该参数中的{}最终会替换成-f参数的值

值得一提的是--fofa-fix-keyword参数,这个参数主要是便于在某些特定的场景,便于修改Fofa查询语句而设计的。

kscan --fofa-fix-keyword 'region="Xinjiang"&&title"{}"' -f 管理
kscan --fofa-fix-keyword 'region="Xinjiang"&&title"{}"' -f 后台
kscan --fofa-fix-keyword 'region="Xinjiang"&&title"{}"' -f 公司
kscan --fofa-fix-keyword 'region="Xinjiang"&&title"{}"' -f OA

基于Fofa的资产测绘

如果只是这样,kscan与其他Fofa查询工具其实都没有很大的区别。这个时候需要提到两个参数:

--scan #当使用--scan参数,kscan将对所有来源资产进行端口扫描、及指纹识别
--check #当使用--scan参数,kscan将对所有来源资产进行指纹识别

image-20210915155558950

当然,也可以使用--scan参数进行端口扫描

image-20210915160820925

可以看到,绝大部分的关键自查已经高亮显示了,如存在列目录、phpinfo的页面,以及各类数据协议也能够精准的识别。

内网资产发现

kscan均采用静态编译,且支持多个平台(windows、linux、drawin),基本能够覆盖绝大部分打点成功之后的使用场景。且是单文件,无需加载任何库文件。相当便携,唯一的缺点是目前体积较大,有40-50MB,后续会想办法做体积的精简

内网存活网段探测

通常打点成功之后,会进行内网的存活网段探测,目前绝大部分探测的方法都是使用bat、sh脚本使用ping的方式去检测网关的存活性,这种方法单线程,且无法根据存活结果进行进一步的探测。而kscan的--spy模块,可以进行多线程的自动化存活网段探测。仅需要7秒就可以探测完一个B段。

image-20210915161327193

也可以对--spy指定参数,进行多种网络环境的个性化探测

  --spy #网段探测模式,此模式下将自动探测主机可达的内网网段可接收参数为:
        #(空)、192、10、172、all、指定IP地址(将探测该IP地址B段存活网关)

当然,和前面一样,也可以使用--scan参数对探测结果进行扫描

image-20210915161700765

自动化的暴力破解工具

得益于kscan的精准协议识别,所以在进行暴力破解的任务下发的时候,效率异常的高

目前Kscan支持的暴力破解协议如下

现在已支持

  • 3389: "rdp"
  • 3306: "mysql"
  • 1433: "mssql"
  • 1521: "oracle"
  • 5432: "postgresql"
  • 27017: "mongodb"
  • 6379: "redis"
  • 21: "ftp"
  • 2121: "ftp"
  • 445: "smb"

计划支持

  • 50000: "db2",
  • 110: "pop3",
  • 995: "pop3",
  • 25: "smtp",
  • 994: "smtp",
  • 143: "imap",
  • 993: "imap",
  • 389: "ldap",
  • 23: "telnet",

值得一提的是,kscan的暴力破解模块会尽量去规避重复工作,比如某个IP开放445、3389或者110、995等,则只会对其中一种协议进行暴力破解,这取决于谁先被发现。

使用起来也非常便携,只需要加上--hydra参数即可

image-20210915162952888

Hydra模块的配置

hydra options:
   --hydra-user   #自定义hydra爆破用户名:username or user1,user2 or file:username.txt
   --hydra-pass   #自定义hydra爆破密码:password or pass1,pass2 or file:password.txt
                  #若密码中存在使用逗号的情况,则使用\,进行转义,其他符号无需转义
   --hydra-update #自定义用户名、密码模式,若携带此参数,则为新增模式,会将用户名和密码补充在默认字典后面。否则将替换默认字典。
   --hydra-mod    #指定自动化暴力破解模块:rdp or rdp,ssh,smb

写在后面

关于kscan后续的开发计划,大致还是往高质量的漏洞扫描器的方向走吧,但是具体的架构目前还没有一个很成熟的想法,但肯定是往这个方向的。剩下的就是现有功能的优化了,截止到目前kscan已经初具雏形了,我还是非常高兴的,哈哈哈哈哈哈

最后呢就是感谢了

感谢各位在Gayhub开源的大佬们,给了我很多思路和经验,fscan、ladon等等

感谢无私贡献指纹的大佬们,Ehole、nmap等等

感谢提交bug、开发建议的各位大佬们,太多了就不点名了,哈哈哈哈

最后依然欢迎各位迎来我的Github提交Bug、需求[https://github.com/lcvvvv/kscan/]