扒一扒古老的arp局域网利器-cSploit

cSploit完全是用Java编写的,使用Android SDK;它使用一些预建的二进制文件,每当命令出现问题时,它都会生成一个su shell,得益于java这一静态语言优势,它能更好实现特殊需要下复杂逻辑功能,在便于维护项目的同时赋予了long生命周期。cSploit的开发初衷是作为一个开源项目,在规范GPL下供IT安全行业人士和极客使用,并允许自由修改源代码满足不同需要,cSploit提供了广泛的GUI(图形用户界面)和细化的功能模块不像kali linux等工具套件需要用到终端并依赖自身很强的命令掌握能力。

cSploit的便携式提起我对现实网络安全的兴趣,有着背后原理的复杂。cSploit在1.2.3版本中预设了ruby语言解释器,为MSF框架在android平台成功运行提供了基础;在1.3.0版本增添了《网络雷达》模块,大大加快了SYN端口扫描和广泛发觉子网外的其他主机;在1.4.2版本修复了MSF更新;1.4.5版本增添了初始化过程中检查更新机制;最新版本是1.6.6-rc.2;于16年六月份定作为EOL(项目终止)结束了4年的生命期,深入了解到:cSploit从提出想法到代码落脚,bug修复,别具匠心的MSF跨平台嵌入,离不开两位核心成员的付出,项目的整个历程“燕尾服君(Linux精神追随者)”始终与github cSploit社区成员协作交流回复,重复着繁琐工作,另一位于14年加入了以色列网络安全公司。我在github社区翻阅着过往的时间里那些关于问题的呈递以及开发作者的诚恳回复,在bug问题修复后的再次“来电”感谢,他们来自世界各地,聚集在github社区,活跃为cSploit带来了生机,我被开源的”contribution”精神,极客精神深深折服,慢雾科技的创始人也曾在看到后,积极鼓励项目向作者捐赠。正是服务于广泛的可用GUI,使得cSploit等UI化工具使用入门难度小白,特别是明文传输泛滥的年代,特别是企业在没有部署WAF设备,华为NIP,APT沙箱,IPS,Anti-DDoS,等入侵检测和攻击防范设备。网络意识形态薄弱的年份,黑的成本很低,人人都能自诩“黑客”。我一直在一些空闲时间里研究cSploit的工作方式,解析其工作原理,尝试改进它。这过程中带来的各种情绪,交叉变化,愈发使我对开源这一词有了新看法。原来还有这种理念。这是商业模式无法媲美的。透过现象看本质,控制变量法,我在前期的探索中,很大程度上受益于这种路径和实验方法。我手上正好有合适的android设备,并且满足特别需要的root环境,提到这:在android DIY的时间轴上,root提权大致经历了三个阶段;1.在andrpid版本还处于4.4及以前的时代,root开发人员或root商利用基于Linux内核漏洞获取管理员权限,诸如市场上kingroot等工具,收集了大量安卓设备可利用缺陷,当手机用户使用时,APP会识别安卓设备的型号,安卓版本和内核版本,与庞大的数据库对验,由云端下传至手机非根下目录,其并未写入/system分区,导致root的获取必须每次请求APP,在每次的关机后,APP通信结束同时进程结束,很容易掉root;2.来到4.4过后,可提权的漏洞基本修复,当然不排除漏网[表情],这时的途径主要是将改造后的su写入/system分区,而我们可以扩展Recovery,借助第三方工具TWRP在Recovery模式下卡刷刷入root管理工具,还可以卡刷,线刷刷入预先写进su的Rom包(也就是刷机);3.安卓7以上,手机厂商在软件底层偏硬件管理层,加入了bootloader锁,整个设备关键性的启动驱动程序也受它的控制,这期间走来了优秀开源工具Magisk(面具),

特点是在/system分区下添加挂载点,让用户刷写特殊的boot.img,修改启动时的挂载操作,所有的操作都在这个system上进行,这样就避开了对原有system的修改,提高了root环境下的设备安全和系统稳定,在面具版本23.0及以前可以使用隐藏模块解决 如手机掌上银行APP对于root环境检测而无法使用的情形,23.0后开发者受邀加入了谷歌公司github社区依旧活跃同时后续版本迭代取消了隐藏模块,当然前提是还得解开bootloader锁,手机厂商会公布密钥在如售后维修中心等技术站,当然你也可以在某宝上,花50Y让卖家利用SSH协议远程连接你的PC桌面 解锁,刷入Magisk,当然了此类白嫖还有很多~~。我之前在网上找到了1.1.3c版,那时纯纯体验“乐趣“。1.2.3以前package名叫dSploit,我找到的已被汉化组汉化,名字我忘记了。在我的回忆中1.1.3便基本成形,可使用模块包括:《跃点跟踪》——主要作用是主机将受控设备的路由作为跃点侦测来自目标设备或者靶机一次对于路由的回显应答,通常以ms为单位,反映的看作是瞬时值,所以,在连续非离散时间段使用跃点跟踪能较好反映出主机与目标设备间的维系,其对于arp欺骗效果.投毒转发代理性能具有预判作用;我做了大量数据收集,同样的我考虑环境变量:信号源距离,在线设备数,蓝牙干扰因素。这些变量在可忽略时如下:在2.4GHz频段下,一般”延迟“在50~110ms接近正常,“延迟”越高对于来自目标数据流数据请求抓取力度,控制能力越低,直至失去联系,而在5GHz频段下,“延迟“降到0~20ms;《SYN式端口扫描+服务运行检查》;《服务登录破解工具》——如cisco,ftp,cvs等使用弱口令,字典破解;《弱安全网站的用户密码窃取》;《DNS域名劫持》;《arp欺骗——cookie获取,JS注入,重定向URL等》;《MSF RPC》等。

1.1.3对于安卓操作系统在4.4及以前运行,无问题,设备一旦root就可以正常使用;对于部分用户,貌似需要安装BusyBox,可能与设备在兼容不良时执行调用不到底层Linux命令有关。在安卓11上,它会带有“该处理器非ARM架构”错误的报错,并无法使用。通过阅读分析项目源码,往往是深度理解的关键:在tools类下Nmap.java中我发现核心使用了import java.util.LinkedList;循环迭代来访问列表中的某些元素;每个核心都做了动态加载handler属性库的布局,如:public NMap() {    mHandler = "nmap";    mCmdPrefix = null;  }  同样ArpSpoof.java里也写有public ArpSpoof() {    mHandler = "arpspoof";  }  每一个“Handler”能使原程序加载产生动态数据后自动创建handlers文件夹放入/data/data/*/files/下,而handlers文件夹中的数据全部以tools.so类型展开,正是作为共享函数库供上层java代码调用。还发现新版本作者完善了Hydra代码,加强引导程序对password库账户密码查找;回到现象,我几乎把作者发布的所有版本运行测试过,它花费了我很多时间,但很值得,尤其是对我的认识和鼓励探索。其实开源APP真正受用的人群真的很少,开发者时间精力,核心成员几个?这一般是没有薪资回报的!测试的机型,系统SDK版本,NDK版本兼容吗?受益人群是哪部分?这些及其它因素当然作为评定APP(广义)的维度。回到主题,通过我的测试,我发现只有一个版本能“残缺”使用;太长时间没有维护,高版本出现无法兼容,低版本程序跑不完就一堆报错了,老实说这是个手动debug的版本,初始化加载的图形界面如果你没有马上手点进入模块区,几秒后便无法使用,带着手机系统一起崩溃,我原来怀疑是RAM跑满了或root后系统不稳定;好在我的跳跃思维完成了所有加载项,完成了/data/data/*/写入,有了数据的落脚后面再打开APP就不会崩了,一点收获。后面,借助于笔记本我在安卓环境模拟器中成功运行高版本,也试着打开神奇的版本,我发现在模拟器中它竟然多了可供用户《设置》的 button,我一直以为先前作者没有为程序设计这个环节,我起初认为是手机屏幕偏小,影响了button在屏幕上的布局,因为有过用手机玩wii模拟器游戏时模拟按键偏小的经历,我想到投屏,将手机实时画面映射到PC,再由PC代接控制手机,由于设备过于old,不管是usb线控还是WiFi协议控,试过的很多群控软件始终读取不到手机硬件的密钥指纹,在不言弃下最终靠360手机助手勉强连接了工作,后面发现问题大致出在画面比例接口上,old导致基于新版本开发的许多功能实现,接口变化了,API级别总是对应着系统版本,综上与我PC看到的前端情况相吻合,使用java反射实现代码修改量大,不现实,目前能力有限,还有一种方法就是同层文件夹放入一个副dex文件,使用Application类型方法名定位到onCreate()函数,其下注册副dex名,有点像载荷投递释放,后面考虑一下,这个先放下了。受限于模拟环境不能真实反映某些情景,我又花费不到70Y买了一台纯原生android系统的google手机,后面我发现很多程序开发软件工程师都把它作为测试机型,我自己也感觉到系统特别稳定,特别是APP兼容性好。cSploit最具破坏的能力是启用MSF框架,通过漏洞查找器搜寻暴露在局域网中设备开放端口的可利用漏洞,执行攻击方案,作者在虚拟机中搭建low安全开放多个高危端口靶机为我们演示,不夸张的说cSploit曾经在移动设备领域广受白帽子等的喜欢,现在在F-Droid商店还能看到它的影子。遗憾的是在作者停止开发后的某年MSF调用失效了,一个技术宅总是在想尽办法让手中的工具活起来,我在github和谷歌上查找解决办法,早年可以通过VPN得到解决,通过作者在维基的描述,也不难判断作者搭建了一个ruby服务器,由于基于ruby语言编写的MSF因为android没有内置编译器无法直接在手机上运行,作者使用工具提前编译它们,通过客户端和服务器连接,实现MSF运行;查阅MSF包含MSFRPCD(本地服务),MSFRPC作为服务端,cSploit正是通过启动RPC远程访问MSF数据库进行对本地主机的漏洞搜寻,我了解到对于服务端来说,RPC是一种非持久性服务,而本地请求是持久性的(废话~),我尝试更改远程过程调用端口,无果,肯定的是本地和远程的通道确实关闭了,我目前的猜测是要么服务器接口代码有改动,要么MSF最新服务提供方使用不同原先的技术,但ruby服务器还活着,SSL证书仍然有效。我还进行了其他的一些研究。例如相比于1.2.3旧版本,新版本1.6.5开始之后在运行arpspoof,对拦截的靶机请求,它会在网站上欲通过本地自签名证书替换网站证书进行获取cookie,一旦模块运行浏览器便告警,同时服务器拒绝本地靶机访问,我针对性测试了IE,Edge,火狐,谷歌,Safari,它们均嗅觉出欺骗,所有web网站无法访问使用;这无疑为中间人攻击的取证分析露马脚;而旧的少了证书替换反而不会引起察觉,使用明文传输的网站,可以获取cooike和JS注入;这种得不偿失使新版本成为鸡肋;我说过cSploit发扬了Nmap,ArpSpoof,Ettercap,Hydra工具中的核心代码思想,我在github找到作者公布的对应版本释放包源码,在tools类,发现1.6.5开始Ettercap增添了代码块“毒化”网络,但我目前没找到‘替换证书‘的那块位置,Nmap作者未改动,所以扫描模块如常。另外,old设备只能运行1.2.3版本,借助cSploit(1.2.3)初始化加载的日志加以判断:作者在最初便做好了检测更新的接口,能快速获取大量有用信息当然要去找实体声明,反编译XML文件;察觉APP初始化连接网络,随后检测更新,同时客户端尝试连接服务器获取更新信息,报错的日志提示->通过SSL握手失败,cSploit后端的想法挺像Kali Linux的:apt -代码托管服务器>>更新软件包索引源>>软件更新,我怀疑是1.2.3引入的HTTP://与新的HTTPS://不一致,后面的一些测试又纠证了怀疑,原因是old设备本地服务器SSL version太旧无法与那端建立握手,更新通道无法打开,这样不会因为强制更新APP更新Ettercap反倒有好处。加载完的《日志报错》意味着指定’更新‘的某个函数后面将作为垃圾回收不再使用,得益于Java Handler——异步信息处理,不会因为‘更新’失败使其他线程不能跟进而崩溃,现在和接下来它是稳定的!并且可以整晚工作!~~很多东西对我来说是新颖的,我的看法是项目开发设计一定要有可回旋的余地,这考量着作者的想法.代码执行能力。我用了很多时间专注在上面,去年的一个多月大部分时间在“透过现象”,最近在挖.看“本质”。最近我在/data/data/*/files/tools/nmap/下找到了Nmap的数据库,里面存放着各类OS操作系统指纹数据,这些数据不用编译也非二进制格式,就像去图书馆一样可直接使用,第一个元素提供每个指纹的点数,TCP时间戳只使用一次(我的理解是保证数据匹配不会因为环境因素->这里尤指网络阻塞和CPU运行 影响而更改原始数据),获得更多点数点数在没有完全匹配的情况下使用,以确定哪个操作系统指纹与目标机器最接近。运用类似的方法,我也找到了Ettercap的一些配置文件,包括修改文件达到DNS劫持->重解析到其他域名或IP。接着还找到了存放大量MAC厂商信息的文件夹,不得不说麻雀虽小五脏俱全。Questions:1.6.5每次重新启动,会丢失主机名;1.2.3主机名与MAC绑得死死的,网段不变时重启也会显示主机名,所以说新版本确实够鸡肋。好在Nmap扫描可以用,我使用了其他工具zANTI对比端口扫描强度,因此我在VMware中启动了Metasploitable虚拟机,一个故意开放多个包括高危端口的Linux/OS;跑完下来三者结果相同,一点点问题是1.6.5有一个端口判断与另外两个不一样。常见的没问题都能吃准~~并且,zANTI最近两年已经在转型了,(毕竟不是开源,看域名属org还是com)取消了落后不实用的模块,我才发觉到这家伙现在在专注漏洞信息收集,有自己主打不同目的完整产品,相同领域里肯定吊打其他android项目。尽管Bettercap有超越Ettercap的野心,但是在我使用以来和同爱好者感受,不太满意,总之…我想说的是初衷理念环节真的很重要,有好看的UI有什么用呢,时间说明一切,最近我在研究一个抓包分析工具Intercepter-NG,来自苏俄的力量。现在,cSploit我还是决定保留在手机上,偶尔使用内置Nmap还是挺方便(主要GUI设计我喜欢);老实说我有改进增添模块的想法,更好地供我使用,MSF现在作为冷链多少是于心不忍,新模块的引入对于后端来说势必会改变全局变量,牵扯整个核心,Java树…逆向又到哪种境界了?对android有多了解?etc~但,这需要足够的知识储备,我还远远不够。尽管说可以Enter一下就完事了,但是对背后知识的敬畏会让人越走越远。尽管如“内存马“越来越盛行,传统的文件webshell放在今天越来越难生存,但,存在即合理,突破往往是来自自信后的忽视。就像哈希加密算法在量子加密没有完全接替时,仍然是作为重要的加密技术而使用;新技术彰显脑力,而传统技术更突显功力。我想我不会因为这些失望沮丧,探索认识的过程总是长满了大多束快乐,老实说纪学即用是我以往学习所没有体会的,在三年的时光里我们总是在获取知识,却很少利用起来->“变现”;应该感到庆幸!我们当下能有大多数时间陶醉自我,为着某个东西去疯狂。

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值