Add strategy num

This commit is contained in:
George Hughey 2019-12-12 16:44:24 -08:00
parent 556f94380d
commit 5c4a4ea08d
2 changed files with 38 additions and 2 deletions

View File

@ -18,6 +18,8 @@ from scapy.utils import wrpcap
from scapy.config import conf from scapy.config import conf
from scapy.all import send, Raw from scapy.all import send, Raw
from library import LIBRARY
socket.setdefaulttimeout(1) socket.setdefaulttimeout(1)
import actions.packet import actions.packet
@ -457,6 +459,7 @@ def get_args():
parser.add_argument('--server-port', type=int, action='store', required=True) parser.add_argument('--server-port', type=int, action='store', required=True)
parser.add_argument('--environment-id', action='store', help="ID of the current strategy under test. If not provided, one will be generated.") parser.add_argument('--environment-id', action='store', help="ID of the current strategy under test. If not provided, one will be generated.")
parser.add_argument('--strategy', action='store', help="Strategy to deploy") parser.add_argument('--strategy', action='store', help="Strategy to deploy")
parser.add_argument('--strategy-index', action='store', help="Strategy to deploy, specified by index in the library")
parser.add_argument('--output-directory', default="trials", action='store', help="Where to output logs, captures, and results. Defaults to trials/.") parser.add_argument('--output-directory', default="trials", action='store', help="Where to output logs, captures, and results. Defaults to trials/.")
parser.add_argument('--log', action='store', default="debug", parser.add_argument('--log', action='store', default="debug",
choices=("debug", "info", "warning", "critical", "error"), choices=("debug", "info", "warning", "critical", "error"),
@ -471,16 +474,23 @@ def main(args):
Kicks off the engine with the given arguments. Kicks off the engine with the given arguments.
""" """
try: try:
if args["strategy"]:
strategy = args["strategy"]
elif args["strategy-index"]:
strategy = LIBRARY[int(args["strategy-index"])][0]
else:
# Default to first strategy
strategy = LIBRARY[0][0]
if WINDOWS: if WINDOWS:
eng = WindowsEngine(args["server_port"], eng = WindowsEngine(args["server_port"],
args["strategy"], strategy,
environment_id=args.get("environment_id"), environment_id=args.get("environment_id"),
output_directory = args.get("output_directory"), output_directory = args.get("output_directory"),
log_level=args["log"]) log_level=args["log"])
eng.initialize_divert() eng.initialize_divert()
else: else:
eng = LinuxEngine(args["server_port"], eng = LinuxEngine(args["server_port"],
args["strategy"], strategy,
environment_id=args.get("environment_id"), environment_id=args.get("environment_id"),
output_directory = args.get("output_directory"), output_directory = args.get("output_directory"),
log_level=args["log"]) log_level=args["log"])

26
library.py Normal file
View File

@ -0,0 +1,26 @@
LIBRARY = [
("[TCP:flags:PA]-duplicate(tamper{TCP:dataofs:replace:10}(tamper{TCP:chksum:corrupt},),)-|", 98%, 100%, 0%),
("[TCP:flags:PA]-duplicate(tamper{TCP:dataofs:replace:10}(tamper{IP:ttl:replace:10},),)-|", 98%, 100%, 0%),
("[TCP:flags:PA]-duplicate(tamper{TCP:dataofs:replace:10}(tamper{TCP:ack:corrupt},),)-|", 94%, 100%, 0%),
("[TCP:flags:PA]-duplicate(tamper{TCP:options-wscale:corrupt}(tamper{TCP:dataofs:replace:8},),)-|", 98%, 100%, 0%),
("[TCP:flags:PA]-duplicate(tamper{TCP:load:corrupt}(tamper{TCP:chksum:corrupt},),)-|", 80%, 100%, 0%),
("[TCP:flags:PA]-duplicate(tamper{TCP:load:corrupt}(tamper{IP:ttl:replace:8},),)-|", 98%, 100%, 0%),
("[TCP:flags:PA]-duplicate(tamper{TCP:load:corrupt}(tamper{TCP:ack:corrupt},),)-|", 87%, 100%, 0%),
("[TCP:flags:S]-duplicate(,tamper{TCP:load:corrupt})-|", 3%, 100%, 0%),
("[TCP:flags:PA]-duplicate(tamper{IP:len:replace:64},)-|", 3%, 0%, 100%),
("[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:R}(tamper{TCP:chksum:corrupt},))-|", 95%, 0%, 0%),
("[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:R}(tamper{IP:ttl:replace:10},))-|", 87%, 0%, 0%),
("[TCP:flags:A]-duplicate(,tamper{TCP:options-md5header:corrupt}(tamper{TCP:flags:replace:R},))-|", 86%, 0%, 0%),
("[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:RA}(tamper{TCP:chksum:corrupt},))-|", 80%, 0%, 0%),
("[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:RA}(tamper{IP:ttl:replace:10},))-|", 94%, 0%, 0%),
("[TCP:flags:A]-duplicate(,tamper{TCP:options-md5header:corrupt}(tamper{TCP:flags:replace:R},))-|", 94%, 0%, 0%),
("[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:FRAPUEN}(tamper{TCP:chksum:corrupt},))-|", 89%, 0%, 0%),
("[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:FREACN}(tamper{IP:ttl:replace:10},))-|", 96%, 0%, 0%),
("[TCP:flags:A]-duplicate(,tamper{TCP:flags:replace:FRAPUN}(tamper{TCP:options-md5header:corrupt},))-|", 94%, 0%, 0%),
("[TCP:flags:PA]-fragment{tcp:8:False}-| [TCP:flags:A]-tamper{TCP:seq:corrupt}-|", 94%, 100%, 100%),
("[TCP:flags:PA]-fragment{tcp:8:True}(,fragment{tcp:4:True})-|", 98%, 100%, 100%),
("[TCP:flags:PA]-fragment{tcp:-1:True}-|", 3%, 100%, 100%),
("[TCP:flags:PA]-duplicate(tamper{TCP:flags:replace:F}(tamper{IP:len:replace:78},),)-|", 53%, 0%, 100%),
("[TCP:flags:S]-duplicate(tamper{TCP:flags:replace:SA},)-|", 3%, 100%, 0%),
("[TCP:flags:PA]-tamper{TCP:options-uto:corrupt}-|", 3%, 0%, 100%)
]