为了检测内网的端口扫描写了个脚本。。。
事情起源
之前一直在做域控搭建,结果域控机(DC)老是莫名其妙重启,排查事件管理器后发现了点东西

一堆的电源报警事件(该事件只会在系统非正常关机、重启时出现),后面进ESXi
管理面板准备重装时发现蓝屏了,报错显示srv.sys
驱动出现问题,经过查询后发现系统有MS17-010
漏洞(wannacry
干的,能把2016打蓝屏也是没谁了)
处理过程
打补丁,用脚本检测内网的扫描情况,汇报上面让他们处理去吧。。
脚本
''' @Description: @Author: Sp4ce @Github: https://github.com/NS-Sp4ce @Date: 2019-05-29 23:18:36 @LastEditors: Sp4ce @LastEditTime: 2019-05-29 23:18:36 '''
import socket import threading import time import os
IP_ADDRESS = '0.0.0.0'
FILENAME = 'log.txt'
PORT = 445
def printalert(string): print('\033[1;31m ' + string + ' \033[0m')
def printsuccess(string): print('\033[1;32m ' + string + ' \033[0m')
def printwarning(string): print('\033[1;33m ' + string + ' \033[0m')
def printinfo(string): print('\033[0;34m ' + string + ' \033[0m')
class tcp_server(): def __init__(self): self.tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.tcp_socket.bind((IP_ADDRESS, PORT)) self.tcp_socket.listen(250) self.proceses = [] printsuccess('Server Start Success,Waiting For Connect....\n')
def run_server(self): while True: sock, addr = self.tcp_socket.accept() t = threading.Thread(target=self.tcp_server, args=(sock, addr)) t.start() t.join()
def tcp_server(self, sock, addr): TIME = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) printinfo('[i] Accept new connection from %s:%s' % addr + ' ...at [' + str(TIME) + ']\n') printinfo('当前线程:' + threading.current_thread().name + '\n') self.writelog(addr) sock.close() printinfo('[-] Connection from %s:%s closed \n' % addr)
def writelog(self, addr): TIME = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) with open(FILENAME, 'r') as file: line = file.read().splitlines() if addr[0] in line: printwarning('[!] Detect ' + str(addr[0]) + ' Connect ' + str(PORT) + ' Port At [' + str(TIME) + '] And This IP Has Been Recorded!\n') else: with open(FILENAME, 'a+') as file1: file1.write(str(addr[0]) + '\n') printalert('[+] Detect ' + str(addr[0]) + ' Connect ' + str(PORT) + ' Port At [' + str(TIME) + '] .\n')
def main(): s = tcp_server() s.run_server()
if __name__ == '__main__': if not os.path.exists(FILENAME): printwarning('[!] Log file is not exists, will create it.\n') os.system(r"touch {}".format(FILENAME)) printsuccess('[+] Create log file success !\n') main()
|
脚本是Python3
写的,运行截图如下

脚本运行后会在当前目录生成log.txt
,记录抓到的IP

然后挂在后台跑就行了,可以用screen
开后台任务