Password Cracking


- 크래킹 : 희생자에게 정신적,물리적 피해를 입히는 행위

- 식별 = ID(유일한 값)


- 인증 = PW(증명, 중복되어도 상관 없음)

  로그인 요청 등을 통해 통신 상에서 보내는 사람들의 자격검증


- 인증 수단 

1. 알고 있는 어떤것 : Password //빈번하게 사용되는 인증 수단

2. 가지고 있는 어떤것 : Credit Card, RFID Card

3. 자신의 어떤것 : 지문, 망막, 음성, 서명

4. 자신이 있는곳 : 위치


- 취약한 패스워드의 분류

1. 길이가 너무 짧거나(4자리 이하) 아예 패스워드가 설정되어 있지 않은 경우

2. 사전에 나오는 단어나 이들의 조합

3. 키보드 자판의 나열

4. 사용자 계정 정보에서 유추한 단어


변수 : 영어(대/소문자),숫자,특수문자

·2가지 변수 -> 10자리 이상 //안전

·3가지 변수 -> 8자리 이상 //안전


- 해시와 암호화
* 운영체제에서 패스워드 숨기는 방법은 해시와 암호화

1. 해시 //한 방향 암호화 , 해시된 문자열은 역해시가 불가능 , 무결성 검사 시 많이 사용
임의의 데이터로 부터 일종의 짧은 문자열로 만들어내는 방법이다.
해시함수는 데이터를 자르고 치환하거나 위치를 바꾸는 등의 방법을 사용해 결과를 만들어내며, 
이 결과를 해시 값이라 한다.

2. 암호화 //양방향 암호화
특별한 지식을 소유한 사람을 제외하고는 누구든지 읽어볼 수 없도록 알고리즘을 이용해 데이터를 전달하는 것이다.
이러한 과정을 통해 암호화된 정보를 생성할 수 있으며, 암호화된 정보는 복호화하여 다시 읽을 수 있다.

- Salt
패스워드는 해시와 암호화 알고리즘으로 변경하여 저장한다.
예를 들어 test1,test2 계정의 패스워드가 1234로 동일할 경우 암호화 및 해시 모두 똑같은 값으로 저장될 것이다.
Salt는 똑같은 패스워드를 숨기기 위한 첨가물이며, 패스워드 크래킹을 어렵게 만드는 보안 강화 기법이다.
리눅스 cat /etc/shadow 에서 확인해보자.
첫번째$ : md5
두번째$ : Salt(Salt값)
세번째$ : Salt+PW

openssl passwd -1 -salt salt값
openssl : 공개 암호화 라이브러리


- 패스워드 크래킹 방법론
1. 사전 대입 공격(Dictionary Attack)
·사용자의 패스워드에 특정 패던이 존재함을 착안
·패스워드로 사용될만한 것들을 사전파일으로 만든 뒤 하나씩 대입
·공격 대상의 개인정보를 안다면 효율적
·용량이 크면 클수록 좋음

2.하이브리드 공격(Hybrid Attack)  
·경험이 높은 사용자의 경우에는 효과가 높지만, 경험이 미비한 사용자의 경우에는 역효과.
단점:추측 잘못한 경우 오래걸림

3. 무작위 대입 공격(Brute Force Attack)
사전 공격 실패 시 사용
영어, 숫자, 특수문자 패턴 중 선택한 패턴과 길이만 선택한 후 모든 가능한 경우의 수로 공격시도
짧은 길이와 단순한 패턴에 효율적
언제가는 뚫리지만 정확히 언제인지는 알 수 없다.관제서비스에서 필터링 되어 질 확률이 높음.
장점:가장정확
단점:오래걸림
4. 레인보우 테이블 공격
패스워드 별로 해시 값을 미리 생성해 놓은 것
크래킹 하고자 하는 값을 테이블에서 검색해서 역으로 패스워드를 찾음
모든 패스워드에 대한 해시 값을 구한다면 용량은 수치화 불가
레인보우 테이블의 핵심은 R(Reduction)함수를 이용해 작은 크기로 줄이는 것에 있음

R함수
해시 테이블은 작은 크기로 줄이기 위함
해시 테이블의 해시 값으로 패스워드 문자열을 만들어 내는 함수
MD5 해시 값 중 앞의 6개 숫자만 뽑아낸다고 가정
MD5 해시 생성과 R함수 동작의 반복을 체인이라 칭함
일반적으로 체인은 몇 천번에 걸쳐 형성


'보안 > 시스템해킹' 카테고리의 다른 글

SystemHacking -3 Backdoor  (0) 2016.04.28
SystemHacking -2 Setuid  (0) 2016.04.28

+ Recent posts