基于模块的python安全工具包框架
项目描述
rm-sec-工具包
python安全脚本的工具包和框架。
特征
- 基于模块的安全框架
- 控制台脚本 rm-sec-toolkit
- 项目处理
- 项目中的笔记处理
- 自定义脚本位置
- 项目的 ctf 标志功能
- 易于创建自定义模型
安装
点子
pip install rm-sec-toolkit
第一次启动时,rm-sec-toolkit 脚本会从 github 加载模块,因此第一次启动可能需要更长的时间。
码头工人
您可以将 rm-sec-toolkit 与提供的 docker 映像一起使用。如果您想使用服务器模块,请不要忘记使用端口映射。
docker run -t -i rame22/rm-sec-toolkit
端口扫描示例
docker run -t -i rame22/rm-sec-toolkit -m remote/gathering/scanner/tcp_syn_scan --rhosts 192.168.0.100 --rports 1-1000 -r
服务器示例
公开并映射希望的端口。比将您想要的目录映射到 /app 目录。
docker run -t -i --expose 12345 \
-p 12345:12345 \
-v "$(pwd)":/app rame22/rm-sec-toolkit \
-m local/server/http_file_server --lport 12345 -r
用法
Usage
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
rm-sec-toolkit
Required Options
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Optional Options
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
--add -a: add a resource {multiple values possible}
--create -c: create a resource {multiple values possible}
--flag -f: add a flag for ctf's {multiple values possible}
--help -h: show usage
--interactive -i: use the interactive mode (default)
--module -m: choose a module {multiple values possible}
--note -n: add a note {multiple values possible}
--version -v: show the current version {multiple values possible}
例子
直接运行一个模块
使用 TCP Scanner 模块并立即运行它
rm-sec-toolkit -m remote/gathering/scanner/tcp_syn_scan --rhosts 192.168.0.100 --rports 22-100 -r
-m直接使用指定的模块。它后面的所有其他选项,将传递给模块参数
-r立即运行模块而不是首先打印模块菜单
创建项目
rm-sec-toolkit -c project
在项目注释中添加一些内容
rm-sec-toolkit -n -r
-r只用来直接运行,因为add notes选项也是常规模块
为 ctf 添加一个标志
rm-sec-toolkit -a flag -n user_flag -f e3b98a4da31a127d4bde6e43033f66ba274cab0eb7eb1c70ec41402bf6273dd8 -r
在本地网络中提供目录
有时 ctf 需要在本地网络中提供一些脚本以将其下载到目标机器上。这可以通过 http_file_server 模块轻松完成。
rm-sec-toolkit -m local/server/http_file_server --lport 12345 -r
不使用 rm-sec-toolkit 控制台直接运行脚本
python3 /usr/local/share/rm-sec-toolkit/modules/remote/gathering/scanner/tcp_syn_scan/tcp_syn_scan.py --rhosts 192.168.0.100 -r
/usr/local/share/rm-sec-toolkit是默认模块位置
更新
您可以使用菜单中的更新功能更新 rm-sec-toolkit。
启动 rm-sec-toolkit
rm-sec-toolkit
Contents
--------------------
(1) - others (C)
(2) - local (C)
(3) - remote (C)
--------------------
(u) - check for new updates
(q) - quit
Please choose one element:
使用该u选项,您可以检查更新、更新工具包或仅更新模块。
先进的可能性
自定义脚本路径
将自定义脚本的路径添加到~/.rmsectk_custom_paths文件中。
echo "~/my_custom_scripts_folder" >> ~/.rmsectk_custom_paths
您还可以为每个项目添加自定义脚本路径。
cd yourProject
echo "/any/path/" >> .rm_sec_proj/.rmsectk_custom_paths
任何项目都包含该project_scripts文件夹。此文件夹会自动添加到.rm_sec_proj/.rmsectk_custom_paths文件中。您在这里放入的每个模块,您都可以在project_scripts.
编写自己的脚本
使用 create module 命令创建模块
您可以使用工具包本身轻松创建新模块。
rm-sec-toolkit -c module -a Your Name -d Any Description -n fancy_module -sn fmodule
您有以下选择。
--author -a: module's author {value needed}
--class-name -c: name of the class {value needed} {default: CustomModule}
--description -d: module description {value needed}
--name -n: module name {value needed}
--short-name -sn: module short name {value needed}
--super-class -s: super class {value needed} {default: BaseModule}
--super-class-path -sp: super class path {value needed} {default: rmsectkf.core.modules.base_module}
手动创建一个模块
创建一个包含以下内容的文件夹。
- init .py(只是将其标记为包)
- rm_module.json
- 你的模块.py
rm_module.json
{
"name": "Your Module Name",
"description": "Description",
"version": 1.0,
"author": "Your Name",
"module": "your_module.py"
}
你的模块.py
#!/usr/bin/env python3
from rmsectkf.core.modules.remote.gathering.scanner.scanner_module import ScannerModule
'''
Your super cool scanner
'''
class YourScanner(ScannerModule):
def __init__(self):
ScannerModule.__init__(self)
# do init stuff here like define the options you need
def init_module(self):
#define the options you need (rm-options package)
self.option_your_option = self.option_handler.create_option("your-option", "your super cool option", needs_value=True, required=True)
pass
# this is the part where you put your code
def run_module(self):
if super().run_module() == False:
return False
#do some cool stuff here
your_option_value = self.option_your_option.value
# just return your module here
def get_module():
return YourScanner()
# start the module if it's executed directly
if __name__ == "__main__":
module = get_module()
module.init_module()
module.start_module()
例子
TCP-Syn-Scanner
#!/usr/bin/env python3
from rmsectkf.core.modules.remote.gathering.scanner.scanner_module import ScannerModule
from rmsectkf.core.network.port import Port
from scapy.all import *
'''
TCP Syn Port Scanner
'''
class TCPSynScan(ScannerModule):
def __init__(self):
ScannerModule.__init__(self)
def init_module(self):
super().init_module()
self.option_rhosts.required = True
self.option_rports.default_value = "1-1000"
self.option_rports.required = True
def run_module(self):
if super().run_module() == False:
return False
# do the scan for each host
for host in self.option_rhosts.value:
print("\nresults for {}:".format(host))
for port in self.option_rports.value:
ip = IP(dst=host) # host ip
tcp = TCP(dport=port, flags='S') # specify port and the SYN flag
# do the request, and get the response
for request, response in sr(ip / tcp, verbose=0, timeout=0.1)[0]:
# check if the response has a tcp layer and check if the flag is a (SYN, ACK) flag.
# in that case the port is open
if response.haslayer(TCP) and response.getlayer(TCP).flags == 0x12:
print(
"\tport {} is open (possible service: {})".format(port, Port.get_service_with_number(port)))
def get_module():
return TCPSynScan()
# start the module if it's executed directly
if __name__ == "__main__":
module = get_module()
module.init_module()
module.start_module()
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
rm-sec-toolkit-0.2.4.tar.gz
(66.0 kB
查看哈希)
内置分布
rm_sec_toolkit-0.2.4-py3-none-any.whl
(74.6 kB
查看哈希)
关
rm_sec_toolkit -0.2.4-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | e3b1482eb013055398d63d83b08718664134eac89e31f136aa572703cf0b4bb5 |
|
| MD5 | 289077a5fedc395b3e5c8776c47c860c |
|
| 布莱克2-256 | 55fb77c64f3658a09d7ece267050109eca2fbf9820ea718c8fa866495aa3029e |