{"id":353756,"date":"2024-05-20T22:34:30","date_gmt":"2024-05-20T22:34:30","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=353756"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=353756","title":{"rendered":"<span>\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 meterpreter \u0441\u0435\u0441\u0441\u0438\u0439 \u0432 \u041e\u0421 Windows<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h4>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>Hello Habr! \u042d\u0442\u0430 \u043c\u043e\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u043e\u043d\u0430 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043a\u0430\u043a \u0442\u043e \u0440\u0430\u0437 \u0438\u0433\u0440\u0430\u043b\u0441\u044f \u044f \u0441 \u0432\u0438\u0434\u0430\u043c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 meterpreter \u0438\u0437 Metasploit Framework \u0438 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0439\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0435\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u041e\u0421 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Windows.<\/p>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437<\/h4>\n<p>\u041f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e, \u043d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u044e\u0441\u044c \u0432\u043e \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c n-\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a (windows\/meterpreter\/reverse_tcp, shell\/bind_tcp, shell_hidden_bind_tcp, vncinject\/reverse_tcp, cmd\/windows\/reverse_powershell), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438.<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 shell\/bind_tcp \u0438 shell_hidden_bind_tcp, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 bind \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u043f\u043e\u0440\u0442\u0430\u043c, \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a meterpreter \u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0438 \u043f\u0440\u0438 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0435 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 dll \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 vncinject\/reverse_tcp \u0442\u0430\u043a \u0436\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 dll, \u043d\u043e \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e \u043f\u043e\u0440\u0442\u0443, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u043a VNC \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Virtual_Network_Computing#cite_note-6\" rel=\"noopener noreferrer nofollow\">(\u043f\u043e\u0440\u0442\u044b 5900+N \u0438 5900+ N)<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0410 \u0432\u043e\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0440\u0435\u0432\u0435\u0440\u0441\u043d\u044b\u0439 \u0442\u0438\u043f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f windows\/meterpreter\/reverse_tcp \u0438 cmd\/windows\/reverse_powershell \u043a\u0430\u043a \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u043a\u0430\u043a \u0438 \u043f\u043e\u0441\u043b\u0435 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u043b\u0438 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0441\u0432\u043e\u0438 dll. \u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0438 \u043f\u043e\u0440\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044f \u0441\u043c\u043e\u0433\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a dll \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u043c:<\/p>\n<pre><code class=\"python\">WIN_7_SIGNATURE = [\"WINBRAND.dll\", \"WINHTTP.dll\", \"webio.dll\", \"SspiCli.dll\", \"cscapi.dll\"] WIN_10_SIGNATURE = [\"rsaenh.dll\", \"netapi32.dll\", \"wkscli.dll\", \"psapi.dll\", \"cscapi.dll\"] <\/code><\/pre>\n<h4>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/h4>\n<p>\u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043a\u0438\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<pre><code class=\"python\">class MeterpreterScaner:     def __init__(self):         self._signatures: List[str] = []         self._processes_with_signatures: List[str] = []         self._processes_with_dynamic_port: List[str] = []         self._suspicious_processes: Dict[str:List[str]] = {} <\/code><\/pre>\n<p>\u041e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441 MeterpreterScaner \u0438 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043d\u0430\u043c \u0432 \u043c\u0435\u0442\u043e\u0434\u0430\u0445.<\/p>\n<pre><code class=\"python\">def _check_windows_version(self) -> None:     info = subprocess.check_output(\"systeminfo\", shell=True)     win = re.findall(REG_FOR_WINDOWS_VERSION, str(info))      if win[0] == '10':         self._signatures = WIN_10_SIGNATURE     elif win[0] == '7':         self._signatures = WIN_7_SIGNATURE     else:         print(\"[X] Only for Windows 7 or Windows 10.\") <\/code><\/pre>\n<p>\u041c\u0435\u0442\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043d\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u041e\u0421 (\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u043c\u0435\u0440\u043a\u0435 \u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u0435). \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0438\u0437 \u043d\u0435\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. <code>REG_FOR_WINDOWS_VERSION = r'(?:Windows\\s+)(\\d+|XP|\\d+\\.\\d+)'<\/code><\/p>\n<pre><code class=\"python\">def _search_process_with_dll(self, dll: str) -> None:     output_tasklist = subprocess.check_output(f\"{CMD_TASKLIST_COMMAND} {dll}\", shell=True)     process_list = re.findall(REG_FOR_EXE_PROCESSES, str(output_tasklist))      for process_info in process_list:         process, process_PID = re.split(r'\\s+', process_info)         if process in self._suspicious_processes:             self._suspicious_processes[f'{process}_{process_PID}'].append(dll)         else:             self._suspicious_processes[f'{process}_{process_PID}'] = [dll] <\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441 dll \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>CMD_TASKLIST_COMMAND = \"tasklist \/M dll\"<\/code>. \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0432\u0441\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 .exe \u0444\u0430\u0439\u043b\u044b <code>REG_FOR_EXE_PROCESSES = r'(?&lt;=\\\\r\\\\n)[A-Za-z]+\\.exe\\s+\\d+'<\/code> \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430\u0448 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u0445 PID \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432.<\/p>\n<pre><code class=\"python\">def _check_suspicious_process(self) -> None:     self._check_windows_version()      for dll in self._signatures:         self._search_process_with_dll(dll)     for proc_info in self._suspicious_processes.items():         proc_name, proc_dlls = proc_info         if len(proc_dlls) == 5:             print(f\"[-] Detected meterpreter signature in memory: {proc_name}\")             self._processes_with_signatures.append(proc_name)     if not self._processes_with_signatures:         print(\"[+] Meterpreter signature in memory not found\") <\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e dll \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440.<\/p>\n<pre><code class=\"python\">def _scan_suspicious_ports(self) -> None:     scan_output = subprocess.check_output(CMD_NETSTAT_COMMAND, shell=True)     local_sockets = re.findall(REG_FOR_LOCAL_SOCKET, str(scan_output))     for l_socket in local_sockets:         l_ip, l_port = l_socket.split(':')         if int(l_port) >= 49152:             if l_ip != \"127.0.0.1\":                 victim_socket = f\"{l_ip}:{l_port}\"                 data_with_suspicious_socket = scan_output.decode().split(victim_socket)                 suspicious_info = re.findall(REG_FOR_REMOTE_SOCKET, data_with_suspicious_socket[1])[0]                 suspicious_socket, suspicious_PID = suspicious_info                 # port 4444 used by default in MSF and meterpreter                 if int(suspicious_socket.split(':')[-1]) == 4444:                     print(f\"[!] Detected MSF connection with {suspicious_socket}\")                 print(f\"[-] Connection {victim_socket} to {suspicious_socket} \"                       f\"used dynamic port on PID - {suspicious_PID}\")                 self._processes_with_dynamic_port.append(suspicious_PID) <\/code><\/pre>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>CMD_NETSTAT_COMMAND = 'netstat -aon |find \/i \"established\"'<\/code>, \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e <code>REG_FOR_LOCAL_SOCKET = r'(?:TCP\\s+)(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d{1,5})'<\/code> \u0438 \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e\u043a\u0435\u0442\u044b. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0440\u0442\u044b \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e\u0431 \u0431\u044b\u043b \u043d\u0435 localhost. \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e remote soket <code>REG_FOR_REMOTE_SOCKET = r'(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d{1,5})\\s+[A-Z]+\\s+(\\d+)'<\/code> \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e. \u0415\u0441\u043b\u0438 \u043f\u043e\u0440\u0442 4444 \u0442\u043e \u044d\u0442\u043e 99.(9)% \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0431\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 MSF \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 VNC, \u043d\u043e \u0434\u0443\u043c\u0430\u044e \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 =)<\/p>\n<pre><code class=\"python\">def finding_meterpreter_sessions(self):     found = False     self._check_suspicious_process()     self._scan_suspicious_ports()      for proc in self._processes_with_signatures:         proc_name, proc_PID = proc.split('_')         if proc_PID in self._processes_with_dynamic_port:             print(f'[!] A match was found in process {proc_name} with PID {proc_PID}')             found = True      if not found:         print(f\"[+] A match wasn't found\") <\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0432\u0435\u0440\u0441\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a meterpreter. \u0422\u0430\u043a\u0436\u0435 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0430\u043d\u0430\u043b\u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f meterpreter \u0432 \u0434\u0430\u043c\u043f\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0433\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043e \u043d\u0438\u0445 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044e <a href=\"https:\/\/github.com\/OverPotter\/MeterpreterScanner\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442<\/a> \u0438 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0437\u0430 \u0443\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043c\u043d\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/758320\/\"> https:\/\/habr.com\/ru\/articles\/758320\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h4>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>Hello Habr! \u042d\u0442\u0430 \u043c\u043e\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u043e\u043d\u0430 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043a\u0430\u043a \u0442\u043e \u0440\u0430\u0437 \u0438\u0433\u0440\u0430\u043b\u0441\u044f \u044f \u0441 \u0432\u0438\u0434\u0430\u043c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 meterpreter \u0438\u0437 Metasploit Framework \u0438 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0439\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0435\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u041e\u0421 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Windows.<\/p>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437<\/h4>\n<p>\u041f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e, \u043d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u044e\u0441\u044c \u0432\u043e \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c n-\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a (windows\/meterpreter\/reverse_tcp, shell\/bind_tcp, shell_hidden_bind_tcp, vncinject\/reverse_tcp, cmd\/windows\/reverse_powershell), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438.<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 shell\/bind_tcp \u0438 shell_hidden_bind_tcp, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 bind \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u043f\u043e\u0440\u0442\u0430\u043c, \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a meterpreter \u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0438 \u043f\u0440\u0438 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0435 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 dll \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 vncinject\/reverse_tcp \u0442\u0430\u043a \u0436\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 dll, \u043d\u043e \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e \u043f\u043e\u0440\u0442\u0443, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u043a VNC \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Virtual_Network_Computing#cite_note-6\" rel=\"noopener noreferrer nofollow\">(\u043f\u043e\u0440\u0442\u044b 5900+N \u0438 5900+ N)<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0410 \u0432\u043e\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0440\u0435\u0432\u0435\u0440\u0441\u043d\u044b\u0439 \u0442\u0438\u043f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f windows\/meterpreter\/reverse_tcp \u0438 cmd\/windows\/reverse_powershell \u043a\u0430\u043a \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u043a\u0430\u043a \u0438 \u043f\u043e\u0441\u043b\u0435 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u043b\u0438 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0441\u0432\u043e\u0438 dll. \u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0438 \u043f\u043e\u0440\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044f \u0441\u043c\u043e\u0433\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a dll \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u043c:<\/p>\n<pre><code class=\"python\">WIN_7_SIGNATURE = [\"WINBRAND.dll\", \"WINHTTP.dll\", \"webio.dll\", \"SspiCli.dll\", \"cscapi.dll\"] WIN_10_SIGNATURE = [\"rsaenh.dll\", \"netapi32.dll\", \"wkscli.dll\", \"psapi.dll\", \"cscapi.dll\"] <\/code><\/pre>\n<h4>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/h4>\n<p>\u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043a\u0438\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<pre><code class=\"python\">class MeterpreterScaner:     def __init__(self):         self._signatures: List[str] = []         self._processes_with_signatures: List[str] = []         self._processes_with_dynamic_port: List[str] = []         self._suspicious_processes: Dict[str:List[str]] = {} <\/code><\/pre>\n<p>\u041e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441 MeterpreterScaner \u0438 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043d\u0430\u043c \u0432 \u043c\u0435\u0442\u043e\u0434\u0430\u0445.<\/p>\n<pre><code class=\"python\">def _check_windows_version(self) -> None:     info = subprocess.check_output(\"systeminfo\", shell=True)     win = re.findall(REG_FOR_WINDOWS_VERSION, str(info))      if win[0] == '10':         self._signatures = WIN_10_SIGNATURE     elif win[0] == '7':         self._signatures = WIN_7_SIGNATURE     else:         print(\"[X] Only for Windows 7 or Windows 10.\") <\/code><\/pre>\n<p>\u041c\u0435\u0442\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043d\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u041e\u0421 (\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u043c\u0435\u0440\u043a\u0435 \u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u0435). \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0438\u0437 \u043d\u0435\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. <code>REG_FOR_WINDOWS_VERSION = r'(?:Windows\\s+)(\\d+|XP|\\d+\\.\\d+)'<\/code><\/p>\n<pre><code class=\"python\">def _search_process_with_dll(self, dll: str) -> None:     output_tasklist = subprocess.check_output(f\"{CMD_TASKLIST_COMMAND} {dll}\", shell=True)     process_list = re.findall(REG_FOR_EXE_PROCESSES, str(output_tasklist))      for process_info in process_list:         process, process_PID = re.split(r'\\s+', process_info)         if process in self._suspicious_processes:             self._suspicious_processes[f'{process}_{process_PID}'].append(dll)         else:             self._suspicious_processes[f'{process}_{process_PID}'] = [dll] <\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441 dll \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>CMD_TASKLIST_COMMAND = \"tasklist \/M dll\"<\/code>. \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0432\u0441\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 .exe \u0444\u0430\u0439\u043b\u044b <code>REG_FOR_EXE_PROCESSES = r'(?&lt;=\\\\r\\\\n)[A-Za-z]+\\.exe\\s+\\d+'<\/code> \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430\u0448 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u0445 PID \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432.<\/p>\n<pre><code class=\"python\">def _check_suspicious_process(self) -> None:     self._check_windows_version()      for dll in self._signatures:         self._search_process_with_dll(dll)     for proc_info in self._suspicious_processes.items():         proc_name, proc_dlls = proc_info         if len(proc_dlls) == 5:             print(f\"[-] Detected meterpreter signature in memory: {proc_name}\")             self._processes_with_signatures.append(proc_name)     if not self._processes_with_signatures:         print(\"[+] Meterpreter signature in memory not found\") <\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e dll \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440.<\/p>\n<pre><code class=\"python\">def _scan_suspicious_ports(self) -> None:     scan_output = subprocess.check_output(CMD_NETSTAT_COMMAND, shell=True)     local_sockets = re.findall(REG_FOR_LOCAL_SOCKET, str(scan_output))     for l_socket in local_sockets:         l_ip, l_port = l_socket.split(':')         if int(l_port) >= 49152:             if l_ip != \"127.0.0.1\":                 victim_socket = f\"{l_ip}:{l_port}\"                 data_with_suspicious_socket = scan_output.decode().split(victim_socket)                 suspicious_info = re.findall(REG_FOR_REMOTE_SOCKET, data_with_suspicious_socket[1])[0]                 suspicious_socket, suspicious_PID = suspicious_info                 # port 4444 used by default in MSF and meterpreter                 if int(suspicious_socket.split(':')[-1]) == 4444:                     print(f\"[!] Detected MSF connection with {suspicious_socket}\")                 print(f\"[-] Connection {victim_socket} to {suspicious_socket} \"                       f\"used dynamic port on PID - {suspicious_PID}\")                 self._processes_with_dynamic_port.append(suspicious_PID) <\/code><\/pre>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>CMD_NETSTAT_COMMAND = 'netstat -aon |find \/i \"established\"'<\/code>, \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e <code>REG_FOR_LOCAL_SOCKET = r'(?:TCP\\s+)(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d{1,5})'<\/code> \u0438 \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e\u043a\u0435\u0442\u044b. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0440\u0442\u044b \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e\u0431 \u0431\u044b\u043b \u043d\u0435 localhost. \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e remote soket <code>REG_FOR_REMOTE_SOCKET = r'(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d{1,5})\\s+[A-Z]+\\s+(\\d+)'<\/code> \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e. \u0415\u0441\u043b\u0438 \u043f\u043e\u0440\u0442 4444 \u0442\u043e \u044d\u0442\u043e 99.(9)% \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0431\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 MSF \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 VNC, \u043d\u043e \u0434\u0443\u043c\u0430\u044e \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 =)<\/p>\n<pre><code class=\"python\">def finding_meterpreter_sessions(self):     found = False     self._check_suspicious_process()     self._scan_suspicious_ports()      for proc in self._processes_with_signatures:         proc_name, proc_PID = proc.split('_')         if proc_PID in self._processes_with_dynamic_port:             print(f'[!] A match was found in process {proc_name} with PID {proc_PID}')             found = True      if not found:         print(f\"[+] A match wasn't found\") <\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0432\u0435\u0440\u0441\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a meterpreter. \u0422\u0430\u043a\u0436\u0435 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0430\u043d\u0430\u043b\u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f meterpreter \u0432 \u0434\u0430\u043c\u043f\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0433\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043e \u043d\u0438\u0445 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044e <a href=\"https:\/\/github.com\/OverPotter\/MeterpreterScanner\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442<\/a> \u0438 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0437\u0430 \u0443\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043c\u043d\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/758320\/\"> https:\/\/habr.com\/ru\/articles\/758320\/<\/a><br \/><\/br><\/br><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-353756","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=353756"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353756\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=353756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=353756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=353756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}