From 8036ed5127b584610f248f96746b71b9eb91970d Mon Sep 17 00:00:00 2001 From: monitoreoDotOsiAtUchileDotCl Date: Thu, 12 Mar 2020 13:20:19 -0300 Subject: [PATCH 1/2] python2.x version with some cli improves, and catching some exceptions --- scanner.py | 54 +++++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 25 deletions(-) mode change 100644 => 100755 scanner.py diff --git a/scanner.py b/scanner.py old mode 100644 new mode 100755 index 4ea240a..e200bc7 --- a/scanner.py +++ b/scanner.py @@ -1,29 +1,33 @@ +#!/usr/bin/env python import socket import struct import sys -from netaddr import IPNetwork - +import argparse +parser = argparse.ArgumentParser(description="SMBGhost ollypwn", version='0.0.0a') +parser.add_argument("-p", "--port", default=445, help="SMB listen port") +parser.add_argument("-i", "--ip", default="127.0.0.1", help="ip to check") +parser.add_argument("-t", "--timeout", default="3", help="network timeout, use a higher value for slow networks") +args = parser.parse_args() +ip = args.ip +port = args.port pkt = b'\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00' - -subnet = sys.argv[1] - -for ip in IPNetwork(subnet): - - sock = socket.socket(socket.AF_INET) - sock.settimeout(3) - - try: - sock.connect(( str(ip), 445 )) - except: - sock.close() - continue - - sock.send(pkt) - - nb, = struct.unpack(">I", sock.recv(4)) - res = sock.recv(nb) - - if res[68:70] != b"\x11\x03" or res[70:72] != b"\x02\x00": - print(f"{ip} Not vulnerable.") - else: - print(f"{ip} Vulnerable") \ No newline at end of file +sock = socket.socket(socket.AF_INET) +sock.settimeout(3) +try: + sock.connect((ip, port)) + sock.send(pkt) + nb, = struct.unpack(">I", sock.recv(4)) + res = sock.recv(nb) +except (StandardError,struct.error) as e: + errMsg = "someError scanning %s on port %s " % (ip, port) + # einar se la come toda.. + errMsg += "error was %s \n" % (str(e)) + sys.stderr.write(errMsg) + sys.exit(1) + +if not res[68:70] == b"\x11\x03": + exit("Not vulnerable " + ip) +if not res[70:72] == b"\x02\x00": + exit("Not vulnerable " + ip) + +exit("Vulnerable " + ip) From cb866a0983e79f5f76319ff76c33d951fce869ee Mon Sep 17 00:00:00 2001 From: monitoreoDotOsiAtUchileDotCl Date: Thu, 12 Mar 2020 22:58:27 -0300 Subject: [PATCH 2/2] added py3 version with minor cli fixes and some exception catching --- scannerp3.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 scannerp3.py diff --git a/scannerp3.py b/scannerp3.py new file mode 100755 index 0000000..7bde81d --- /dev/null +++ b/scannerp3.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +import socket +import struct +import sys +import shutil +import argparse +import uuid +from subprocess import Popen, PIPE, STDOUT + +parser = argparse.ArgumentParser() +parser.add_argument("-p", "--port", default=445, help="SMB listen port") +parser.add_argument("-i", "--ip", default="127.0.0.1", help="ip to check") +parser.add_argument("-t", "--timeout", default="3", help="network timeout, use a higher value for slow networks") +args = parser.parse_args() +ip = args.ip +port = args.port +pkt = b'\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00' +sock = socket.socket(socket.AF_INET) +sock.settimeout(3) +try: + sock.connect((ip, port)) + sock.send(pkt) + nb, = struct.unpack(">I", sock.recv(4)) + res = sock.recv(nb) +except (BaseException,struct.error) as e: + errMsg = "someError scanning %s on port %s " % (ip, port) + # einar se la come toda.. + errMsg += "error was : %s \n" % (str(e)) + sys.stderr.write(errMsg) + sys.exit(1) + +exitMsg = "NotVulnerable %s\n" % (ip) +if not res[68:70] == b"\x11\x03": + exit(exitMsg) + sys.exit(1) +if not res[70:72] == b"\x02\x00": + exit(exitMsg) + sys.exit(1) + +exitMsg = "Host with ip %s is vulnerable" % (ip) +exit(exitMsg)