# 뻐꾸기의 알
위와 같은 사실로 공격자가 암호화된 패스워드를 알아내기 위해서 딕셔너리 공격을 했다는 것을 알게되었다.
해커는 딕셔너리에 있는 모든 단어를 사용하여 유닉스의 Crypt()함수로 암호화 하였다.
그리고 각 패스워드를 암호화한 후에 해커는 탈취한 암호화된 패스워드와 비교하였다.
딕셔너리와 패스워드가 일치하면 패스워드 크래킹에 성공한다.
1. 첫번째 파이썬 프로그램 - 유닉스 패스워드 크래커
- 유닉스 패스워드 크래커를 만들기 위해 crypt() 알고리즘 사용
- 암호화된 유닉스 패스워드 해시를 계산하기
1) crypt.crypt()함수 호출
2) 이 함수에 패스워드와 솔트(salt) 전달
# 유닉스 패스워드 크래커 프로그램 만들기
1. main 함수 만들기
- 암호화된 패스워드 파일인 "passwords.txt"를 열고 패스워드 파일에 있는 각 라인을 읽어온다.
- 각 라인마다 사용자이름과 해시화된 패스워드를 분리한다.
- testpass()함수를 호출하여 딕셔너리 파일에 있는 패스워드와 일치하는 지 확인
2. testpass 함수 만들기
- 암호화된 패스워드를 인자값으로 입력 받은 후 패스워드를 찾거나 딕셔너리에 있는 모든 단어를 대입해본 후에 반환한다(* 첫번째 두 문자를 사용하여 솔트를 제거)
- 딕셔너리를 열어서 딕셔너리에 있는 각 단어를 읽어와 단어마다 솔트를 상ㅇ하여 패스워드 해시를 생성한다.
- 결과값이 암호화된 패스워드 해시와 동일하다면 패스워드 찾기 성공
- 찾을 때 까지 계속한다.
user : victim//root
cryptPass : HX9LLTdc/jiDE // DFNxgW7C05fo
-> 최신 유닉스나 리눅스 계열의 운영체제에서는 /etc/shadow파일에 해시화된 패스워드를 저장하고 더욱 보안적으로 안전한 해시화 알고리즘을 사용함
-----------------------------------------------------------------------------------------------------------------------
2. 두번째 파이썬 프로그램 - 압축파일 패스워드 크래커
# 선을 위해 악을 사용하기
1. 압축파일 패스워드 크래커
- 'zipfile' 라이브러리와 extractall()메소드를 사용할 예정
* .extractall() : 패스워드를 입력할 수 있는 파라미터로 사용
- evil이라는 파일 생성 후 evil.zip파일로 압축
evil을 evil.zip으로 압축 후 제거함 -> python unzip.py을 통해 evil.zip의 압축을 품
- extractall() : 패스워드를 전달하는 파라미터로 사용(패스워드 = secret)
# 패스워드를 잘못입력했을 경우
=> 잘못된 패스워드를 입력하면 예외가 발생한다는 점을 사용하여 딕셔너리 파일에 있는 패스워드가 압축파일의 패스워드와 일치하는지 확인가능
=> 예외가 발생하지 않는다면 패스워드를 찾았다는 의미
---------------------------------------------------------------------------------------
dictionary.txt로 password 전수조사를 위한 unzip.py 수정
----------------------------------------------------------------------------------------
+ 쓰레드를 활용하여 더욱 효율적으로 실행가능
'Security' 카테고리의 다른 글
침투테스트(FTP와 웹을 이용한 대규모 공격) (0) | 2020.03.11 |
---|---|
침투 테스트(포트스캐너 만들기, SSH 봇넷 구축하기) (0) | 2020.03.11 |
파이썬 언어(파일I/O, Sys 모듈, OS모듈) (0) | 2020.03.08 |
파이썬 언어(딕셔너리, 네트워크, 선택문, 예외처리, 함수, 반복문) (0) | 2020.03.08 |
파이썬 언어(변수, 문자열, 리스트) (0) | 2020.03.07 |