본문 바로가기

해킹/해킹 기법

해킹 기법 - Hash Cracking

케빈 미트닉

> 사회공학기법의 달인

 

전화 해킹.

 

* 보안!

돈 주고 사는 프로그램, 솔루션이 아니다.

 

 


rsh -> ssh

rlogin

 

R 서비스 . ( Remote )

 

홈디렉토리.

.rhosts.

IP주소

 

JSZ : IRC

IP 스푸핑으로 인증을 다 뚫어버릴 수 있음

공격 원리

TCP Session Hijacking

> 클라이언트 pc는 syn 대답을 못하게 마비를 시켜버리고,

공격 pc로 서버에 syn을 날리면 서버가 클라이언트 pc에 synack를 보내고

다시 공격 pc가 ack를 날려서 완성시킨다. (클라이언트 pc는 syn응답을 하지 못하는 마비상태이므로)


* TCP / UDP

데이터를 보내는 방법의 차이

- TCP : 데이터 잘 보내는 것

- UDP : 막 보내는 것

 

* TCP 연결 과정

3 WAY handshake

  • SYN : 처음 데이터를 보낼 거라는 신호 패킷
  • SYNACK : 준비됐다는 응답패킷
  • ACK : SYNACK에 대한 응답패킷

이 3가지의 과정이 끝나면 데이터를 주고 받음

 

 rsh 내가 공격할 대상 ip "cat '+ +' > .rhosts"

 

 

네트워크 공부할 때?

> wireshark

> python scapy

 

 


HASH Cracking

> 글자 모양을 바꾸는 거.

> 암호화, 인코딩, HASH

> 일방향함수

> 그리고 길이가 지정된 함수/ 어떤 길이의 값을 입력하더라도 정해진 길이의 값으로 변형된다.

 

HASH 알고리즘에는 대표적으로 유명한 2가지가 있음

> MD5, SHA-256

 

* HASH 가 왜 필요할까?

1 ) 데이터 보호.

> 아이디 ,비밀번호

만약 HASH를 안하고 비밀번호를 DB에 그대로 저장해두고 있다면 크리덴셜 스터핑에 취약해짐.

 

그래서 알아볼 수 없는 HASH로 저장을 해두면 DB에서 어떤 비밀번호인지 찾을 수는 없더라도 검증은 할 수있음

 

웹 사이트에서 비밀번호 찾기를 눌렀을 때 안 찾아주고 바꿔라고 하는 이유

> 진짜 DB도 몰라서 그럼

 

2 ) 데이터 무결성 검증

> HASH 는 한 글자만 바뀌더라도 HASH값 전체가 확 바뀌어버리므로 원래 글자를 한 byte씩 비교하는 것보다

파일 전체를 HASH를 돌려버리면 어떤 파일 이름이 맞는 건지 한 눈에 비교가능한 장점이 있다. 

 


HASH Hacking

1 ) Hash Collision ( 해시 충돌 )

> 복호화는 안 되지만 hash라는 것은 길이가 정해져 있으므로

어떤 다른 값과 내 값이 hash값이 같은 값으로 귀결될 위험이 있다.

이 위험은 hash의 길이가 짧으면 짧을수록 커지는데, MD5가 대표적인 예이다.

 

따라서 보안 용도로 MD5 해시 알고리즘을 사용하는 것은 적절치 않다고 볼 수 있다.

 

2 ) Brute Force ( 무차별 대입 공격 )

> 다 때려 넣어 보기

 

칼리 리눅스에는 hashcat이라는 도구가 있다.

이 hashcat을 이용하면 hash를 크랙할 수 있다.

 

\

Mode가 있는데, 0번은 사전대입 공격이다.

3번 Brute Force는 사전이 없이 무작정 다 때려버리는 것이다.

Hashcat 사용법

hashcat -a 3 -m 0 "크랙할 파일~" ?d?d?d?d

-a는 공격모드를 의미하는 것으로 3번인 브루트 포스를 말하는 것이고 -m은 md5를 의미한다.

그리고 브루트 포스 시에 ?d는 0~9까지의 charset을 의미하기 때문에 ?d?d?d?d는 0000~9999까지의 값을

브루트포스로 무차별 대입 공격하라는 의미이다.

 

 

==> 비밀번호를 어렵게 만들어야 하는 이유

비밀번호를 쉽게 만들면 그만큼 쉽게 크랙된다.

 

3 )  Rainbow Table

기본적으로 HASH함수는 역함수가 존재하지 않기 때문에 수학적으로도 복호화가 불가능하다.

 

그래서 처음부터 다 구해놓고 그 표에서 찾아버리자! 하는 방법이 바로 레인보우 테이블이다.

 

만약 cyberpunk 라는 글자를 MD5 알고리즘으로 HASH를 생성했다고 해보자.

 

이를 hash crack 사이트에 넣고 돌려보니 순식간에 어떤 글자인지 크랙이 되었다.

 

 

여기에 ! 와 1을 넣어서 cyberpunk!1 이라는 글자를 다시 hash 생성하였다.

 

 

특수문자 ! 과 1 만 추가되었는데 크랙이 되지 않는다.

 

 

구글을 통해 쉽게 접근할 수 있는 다음과 같은 크랙 사이트들도 레인보우 테이블을 이용해서 크랙하는데,

 

조금만 조합이 복잡해져도 크랙이 안되는 모습을 보여주고 있다.

 

무차별 대입 공격의 특성상 아무리 많은 표를 만들어놔도 결국 모든 것을 대입해놓기는 현실적으로

불가능에 가깝다.

 

이렇기 때문에 주로 쓰는 메인 비밀번호는 반드시 어렵게 대문자+ 소문자+ 특수문자 + 숫자의 조합으로

만들어놔야 제 3자의 손에 쉽게 크랙되지 않을 것이다.