무차별 대입 프로그램 - muchabyeol daeib peulogeulaem

꿑팁: 웬만한 툴들은 범위 공격가능함 (시간절약, 무차별대입 공격으로 인한 lock out 조심)

14.2 - Online Password Attacks

온라인 비밀번호 공격은 사용자 이름 및 비밀번호 인증 체계를 사용하는 네트워크 서비스에 대한 비밀번호 추측 시도를 포함한다. 여기에는 HTTP, SSH, VNC, FTP, SNMP, POP3 등의 서비스가 포함된다.
주어진 네트워크 서비스에 대한 암호 공격을 자동화할 수 있으려면, 우리는 해당 서비스에 의해 사용 중인 특정 프로토콜에 대한 인증 요청을 생성할 수 있어야 한다. 우리에게 다행스럽게도, Hidra, Medusa, Ncrack, 그리고 Metasploit와 같은 도구들은 많은 네트워크 프로토콜 인증 체계를 다루는데 내장되어 있다.

14.2.1 - Hydra, Medusa, and Ncrack
이 세 가지 도구는 아마도 암호 보안 감사를 수행하는 데 가장 인기 있는 도구일 것이다.
그들은 각각 장단점을 가지고 있고 다양한 프로토콜을 효과적으로 다룰 수 있다.
이러한 도구들은 각각 서로 유사한 방식으로 작동하지만, 각각의 특이점을 배우는 데 시간을 할애해야 한다.

14.2.1.1 - HTTP Brute Force
그것의 저자들에 따르면, 메두사는 빠르고, 대량으로 병렬로, 모듈식으로, 로그인하는 짐승이 되도록 의도되었다고 한다. 다음은 htaccess 보호된 웹 디렉토리에 대해 시작된 Medusa를 사용한 짐승의 힘의 공격의 예다.

root@kali:~# medusa -h 10.11.1.219 -u admin -P password-file.txt -M http -m DIR:/admin -T 10
...
ACCOUNT FOUND: [http] Host: 10.11.1.219 User: admin Password: backup2 [SUCCESS]

(* 콘솔에서 테스트 해보니 어떤 계정을 넣어도 암호가 admin으로 성공함...집에서 브라우저로 확인해볼 필요가 있음)


14.2.1.2 - RDP Brute force
Nmap의 크리에이터에 의해 구축된 Ncrack은 고속 네트워크 인증 크래킹 툴이다. ncrack 도구는 Windows RDP 프로토콜을 안정적이고 빠르게 브루트포스할 수 있는 몇 안 되는 도구 중 하나이다.

root@kali:~# ncrack -vv --user offsec -P password-file.txt rdp://10.11.1.35
...
Discovered credentials on rdp://10.11.1.35:3389 'offsec' 'Offsec!'

(* 우분투에서 Ncrack설치에 실패하여 집에서 칼리로 테스트해봐야함.)


14.2.1.3 - SNMP Brute Force
THC-Hydra는 또 다른 강력한 온라인 비밀번호 크래커로, 잘 알 열리진다.
SNMP를 포함한 다양한 프로토콜 인증 체계를 깨는 데 사용할 수 있다.

root@kali:~# hydra -P password-file.txt -v 10.11.1.219 snmp
...
[161][snmp] host: 10.11.1.219 login: password: manager

14.2.1.4 - SSH bruteforce
하이드라는 다음과 같이 강제 브루트포스를 SSH에도 사용할 수 있다.

root@kali:~# hydra -l root -P password-file.txt 10.11.1.219 ssh
...
[22][ssh] host: 10.11.1.219 login: root password: toor

(* 대상을 네트워크 대역으로 지정 가능 10.11.1.0/24)


14.2.1.5 - Account Lockouts and Log Alerts
그들의 성격상, 온라인 브루트포스 비밀번호 공격은 시끄럽다.

로그인 시도가 여러 번 실패하면 대개 대상 시스템에 로그와 경고가 생성된다. 경우에 따라서는 사전에 정의된 로그인 시도 횟수가 실패한 계정을 차단하도록 대상 시스템을 설정할 수도 있다.
관리자가 계정을 다시 활성화할 때까지 유효한 사용자는 자신의 자격 증명으로 서비스를 이용할 수 없기 때문에 침투 테스트 중에 비참한 결과가 될 수 있다.
온라인 브루트 스 공격을 맹목적으로 실행하기 전에 이 점을 명심하십시오.


14.2.2 - Choosing the Right Protocol: Speed vs. Reward
프로토콜과 패스워드 크래킹 도구에 따라, 한 가지 공통적인 옵션은, 브루트 포스 공격의 속도를 높이는 것이다. 그러나 (RDP, SMB 등) 프로토콜 제한으로 인해 스레드 수를 늘리지 못해 암호 추측 프로세스가 비교적 느리게 되는 경우도 있다.  여기에, RDP와 같은 프로토콜의 프로토콜 인증 협상은, 예를 들어, HTTP보다 더 많은 시간이 소요되어, 이러한 프로토콜에 대한 공격이 더욱 느려진다. 그러나, RDP 프로토콜을 무차별적으로 적용하는 것은 HTTP보다 더 느린 과정일 수 있지만, 성공적인 RDP 공격은 종종 더 큰 보상을 제공할 것이다.

온라인 브루트포스 공격의 숨은 기술은 공격을 시작하기 전에 목표물, 사용자 목록 및 암호 파일을 신중하고 지능적으로 선택하는 것이다.

14.2.3 - Exercises
1. Conduct targeted password attacks on systems within your target network range.
2. Identify the protocols that run well. Which do not?
3. Ensure that you don't lock out any accounts.


14.3 - Password Hash Attacks

14.3.1 - Password Hashes
암호 해시함수는 임의의 데이터 블록이 주어진 경우 해시 값 또는 메시지 다이제스트라고 하는 고정 크기 비트 문자열을 반환하는 알고리즘을 구현하는 단방향 함수다.
암호 해시함수의 가장 중요한 사용 중 하나는 암호 확인에 응용하는 것이다.
비밀번호 인증 메커니즘을 사용하는 대부분의 시스템은 이러한 비밀번호를 기계에 로컬로 저장할 필요가 있다.

현대의 인증 메커니즘은 암호를 일반 텍스트에 저장하는 대신 보안을 향상시키기 위해 보통 해시(hash)로 저장한다.

이는 운영체제, 네트워크 하드웨어 등에 해당된다.

이는 인증 프로세스 중에 사용자가 제시한 암호가 해시되고 이전에 저장한 메시지 digest와 비교된다는 것을 의미한다

14.3.2 - Password Cracking
암호 분석에서 암호 크래킹은 저장된 해시를 고려할 때 명확한 텍스트 암호를 복구하는 과정이다.
해시 타입이 알려지면 암호 크래킹에 대한 일반적인 접근방식은 암호에 대한 추측을 반복적으로 시도하새로 생성된 다이제스트를 도난 하거나 덤핑된 해시와 비교함으로써 인증 프로세스를 시뮬레이션하는 것이다.
해시를 생성한 프로그램이나 메커니즘에 대한 추가 정보를 갖지 않고 정확한 유형의 해시를 식별하는 것은 매우 어려울 수 있고 때로는 불가능할 수도 있다.

암호 해시를 식별할 때 참조용으로 사용할 수 있는 일반적인 해시 목록은 Openwall 웹 사이트에서 찾을 수 있다. 주의해야 할 세 가지 주요 해시 속성이 있다.

o 해시의 길이(각 해시함수의 출력길이)이다.
o 해시에 사용되는 문자 집합.
o 해시에 존재할 수 있는 특수 문자.

여러 개의 암호 크래킹 프로그램(예: John)은 사용되는 알고리즘을 추측하기 위해 주어진 해시에 패턴 매칭 기능을 적용하지만, 이 기술은 일반 해시에만 적용된다. 이 작업을 수행하려는 또 다른 도구는 해시 hash-identifier이다.

root@kali:~# hash-identifier
...
HASH: c43ee559d69bc7f691fe2fbfe8a5ef0a
Possible Hashs:
[+] MD5
[+] Domain Cached Credentials - MD4(MD4(($pass)).(strtolower($username)))

14.3.3 - John the Ripper (현재 테스트 해볼 수 있는 pwdump 파일이 없음ㅜ)

대상 시스템에서 암호 해시를 얻었다면, 당신은 추가 공격에서 명확한 평문 값을 얻을 수 있도록 암호를 해독해볼 것이다. 암호를 해독하는 가장 인기 있는 도구 중 하나는 존 더 리퍼다. 존은 수십 개의 비밀번호 형식을 지원하며 계속 개발 중이다. brute-force 모드에서 John을 실행하는 것은 명령줄에 암호 해시가 포함된 파일 이름을 전달하는 것만큼 간단하다.
root@kali:~# john 127.0.0.1.pwdump
....

위의 출력에서 알 수 있듯이, 존은 해시 타입을 정확하게 인식하고 그것을 깨기 위해 출발한다.
그러나 이와 같은 짐승 같은 공격은 오랜 시간이 걸릴 것이다.

대신, 우리는 단어 목록 매개변수 -wordlist를 존에게 전달할 수 있다. 일부 비밀번호가 크랙되어 남아 있으면

다음에는 --rules 파라미터를 사용해서 존의 단어 맹글링을 규칙을 적용할 수 있다.
root@kali:~# john --rules --wordlist=/usr/share/wordlists/rockyou.txt
127.0.0.1.pwdump


Linux 해시를 존으로 크랙하려면 unshadow 사용해야할 것이다.
compromised된 시스템에서 passwd와 shadow파일을 결합해주는 유틸이다.

root@kali:~# unshadow passwd-file.txt shadow-file.txt > unshadowed.txt

우리는 이제 unshadow 파일을 평상시처럼 존에게 전달하고 암호 해시를 깨트릴 수 있다.
root@kali:~# john --rules --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
s3cr3t (victim)


14.3.4 - Rainbow Tables
가능한 모든 일반 텍스트를 하나씩 시도하기 때문에, 전통적인 짐승 같은 크래커는 복잡한 암호를 풀기에는 시간이 너무 많이 걸린다. 타임 메모리 트레이드오프 아이디어는 미리 모든 크래킹 계산을 수행하고 그 결과를 이진 데이터베이스, 즉 레인보우 테이블 파일에 저장하는 것이다. 이 테이블들을 미리 계산하는데는 오랜 시간이 걸리지만, 일단 사전 계산이 끝나면, 타임 메모리 트레이드오프 크래커는 기존의 브루트포스 크래커보다 수백 배 더 빠를 수 있다.

암호 크래킹의 어려움을 증가시키기 위해, 암호는 해시되기 전에 임의의 값과 결합되는 경우가 많다. 이 값을 salt라고 하며, 각 암호에 대해 고유해야 하는 그 값은 인증 프로세스에서 사용할 데이터베이스나 파일의 해시와 함께 저장된다.

salt의 주된 목적은 Rainbow Table 공격의 비실용성을 높이는 것이며, salt가 없다면 해시된 암호 데이터베이스 크래킹의 효율성을 크게 향상시키는 데 사용될 수 있다


14.3.5 - Passing the Hash in Windows (클라우드에 설치는 했는데 대상과 그 대상에 대한 HASH 필요)
암호 해시에 크래킹은 시간이 많이 소요될 수 있고 종종 실현 가능하지 않다. 덤프된 해시를 크래킹하지 않고 사용하는 다른 방법은 1997년부터 있어왔다. PTH(Pass-The-Hash)으로 알려진 이 기술은 공격자가 평문 암호가 아닌 사용자 이름과 NTLM/LM 해시의 유효한 조합을 사용하여 원격 대상에 인증할 수 있도록 한다.
이는 NTLM/LM 암호 해시가 salt되지 않고 사용자 이름과 암호의 조합이 동일한 세션과 컴퓨터 간에 정적으로 남아 있기 때문에 가능하다.


다음 사항을 고려하십시오.

시나리오:
조직은 네트워크 내에서 디스크 이미징 기술을 사용하거나, 그렇지 않으면 여러 컴퓨터에서 로컬 관리 사용자를 사용할 수 있다. 이 컴퓨터들 중 하나에 취약성이 있어서 우리는 local LM과 NTLM 해시 덤프를 통해 시스템 권한을 제공받을 수 있었다. 우리는 로컬 관리자 NTLM 해시를 복사하고 동일한 로컬 관리자/암호 조합을 가진 다른 머신의 셸을 얻기 위해 pth-winexe의 패치된 버전의 암호 대신 이 발견된 해시를 이용한다.

먼저 인증에 사용할 암호 해시를 포함하는 SMBHASH라고 불리는 환경 변수를 설정하는 것으로 시작한다.

root@kali:~# export SMBHASH=aad3b435b51404eeaad3b435b51404ee:6F403D3166024568403A94C3A6561896

그런 다음 pth-winexe 도구를 사용하여 암호 해시를 사용하여 인증하고 대상 시스템에서 원격 명령 프롬프트를 얻을 수 있다.
root@kali:~# pth-winexe -U administrator% //10.11.01.76 cmd
Password for [WORKGROUP\administrator]:
HASH PASS: Substituting user supplied NTLM HASH...

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.dw

C:\Windows\system32>

14.3.6 - Exercises (다양하게 실습해보고 메타스플로잇으로 SMB공격해보기)

1. Use the different tools covered in this module to conduct password attacks against various services in the lab.

2. Use Metasploit to exploit one of the SMB servers in the labs. Dump the password hashes and attempt a pass-the-hash attack against another system