Chapter 1. 패스워드크래킹에대한이해 1.1 해시와암호화 - 해시와암호화는모두패스워드를효과적으로숨기는기술이나, 암호화알고리즘이 암호화되지않은평문을암호화한뒤에이를다시복호화할수있는반면, 해시알고 리즘결과물은복호화가불가능하다는차이점이있다. Ⅰ. 암호화 (Encryption) ⑴ 간단한예 ( hello을암호화 ) 1 hello의각문자에서알파벳 3자릿수만큼이동 결과값 : khoor 2 결과값은 Key가 3임을알고있는상대방은알고리즘을통해복호화가가능 ⑵ 특징 - Key에따라결과값 ( 암호문 ) 이다름 - 정상적인사용자는키를이용하여복호화가가능 - 알고리즘 ( 공개 ), 키 ( 비공개 ) - 키를모를경우암호문을유추하기가매우힘듬 Ⅱ. 해시 (Hash) ⑴ 간단한예 ( 1234567890 특정알고리즘의의한해시 ) 1 앞의 5자리를뒤의 5자리로나눈다 ( 12345 / 67890 ) 결과값 : 0.18183826778612461334511710119311... 2 결과값의소숫점 5자리부터 10자리까지 6자리를뽑아낸다 결과값 : 382677 ⑵ 특징 - 단방향 (One-Way) -> 예 : 믹서기? 1
- 손실압축 -> 결과값 ( 해시값 ) 을통해원문을유추하기어려움 - Input Size( 입력값의길이 ) 와상관없이고정된 Output Size를갖음 - Collistion-Free ( 충돌에자유로워야함, 1:1 관계다 ) 원문 == 원문? 해시값 == 해시값 원문!= 원문? 해시값!= 해시값 ⑶ Hash 의종류 알고리즘 개발시기 출력길이 블럭크기 라운드수 MD5 1992 128 512 64 SHA-1 1995 160 512 80 TIGER 1995 192 512 56 RIPEMD-128 1996 128 512 128 RIPEMD-160 1996 160 512 160 RIPEMD-256 1996 256 512 128 RIPEMD-320 1996 320 512 160 SHA-256 2002 256 512 64 SHA-384 2002 384 1024 80 SHA-512 2002 512 1024 80 1.2 Salt Ⅰ. 암호화 (Encryption) - 기본적으로패스워드는해시와암호화알고리즘으로변경하여저장한다. 예를들어 root 사용자와 whitehacker 사용자의패스워드가똑같이 qwer1234' 라고가정해보자. 해시나암호화를통해패스워드를저장하면똑같은패스워드는똑같은해시값이나똑같은암호문으로저장된다. - 이렇듯똑같은해시결과나암호문은똑같은결과만으로도패스워드를노출시킨다는 약점이있다. Salt 는이런상황을막기위해패스워드해시와암호화에사용되는첨 가물의일종으로, 운영체제별로다양한알고리즘이존재한다. - qwer1234 를 MD5 알고리즘으로해시한패스워드 값 : 5D93CEB70E2BF5DAA84EC3D0CD2C731A 2
- Salt 사용전에는 root 와 whitehacker 계정은같은패스워드인 'qwer1234' 를사용하 므로두계정에대한패스워드해시값은같다. - Salt 사용예시 : 2개의문자를랜덤으로생성하여패스워드앞에붙이고그것을다시해시하거나암호화하기도한다. ⑴ root 계정에는 'a4' 라는문자의해시값생성하여패스워드앞에붙이고그것을다시해시하거나암호화한다. 결과값 : a4qwer1234의해시값 -> B87F422B025085703A630F736DD76FCB ⑵ whitehacker 계정에는 'EF' 라는문자의해시값생성하여패스워드앞에붙이고 그것을다시해시하거나암호화한다. 결과값 : EFqwer1234 의해시값 -> 62471D36FE3B00D3ABD03D42DED5E771 ⑶ 패스워드파일로저장할때는이해시값만저장할수없다. 시스템이패스워드와어떤것을합해해시를구한것인지알수없기때문이다. 따라서패스워드파일에저장할때는간단한인코딩을통해해시결과값앞이나뒤에 Salt를붙인다. 예 : 리눅스 /etc/shadow 파일을살펴본다. 1.3 패스워드크래킹방법에대한이해 Ⅰ. 사전대입공격 ( Dictionary Attack ) - 사전대입공격은패스워드로사용할만한것을사전으로만들어놓고이를하나씩대입하여패스워드일치여부를확인하는것이다. 공격대상의개인정보등을충분히알고있다면매우효율적인공격방법이며실제로모의해킹을하는경우상당수의패스워드가추측에의한사전대입공격에의해밝혀졌다. Ⅱ. 무작위대입공격 ( Brute Force Attack ) - 사전대입공격에서실패했을때주로사용한다. 패스워드에사용될수있는문자열의범위를정하고, 그범위내에서생성가능한모든패스워드를생성하여패스워드로입력해보는것이다. 이공격은패스워드가단순하고짧을경우단시간에크래킹된패스워드를알아낼수있지만, 크고복잡한경우오랜시간이걸린다. Ⅲ. 레인보우테이블을이용한공격 ( Rainbow Attack ) - 크래커가캡처한해시와알려진암호에서이미계산한해시를간단하게비교할수만있다면크래킹시간을크게단축시킬수있다. 미리계산된해시공격이라고알려진이공격은암호가솔트되지않은경우에만성공할수있으며그렇지않으면동일한암호도다양한해시를가질가능성이있다. 이방법은제대로작동하기만한다면상당한속도개선이이루어진다. Ⅳ. 사회공학적기법을이용한공격 ( Guessing Attack ) 3
Chapter 2. 리눅스인증과패스워드 2.1 리눅스인증의구성요소 Ⅰ. 리눅스의인증과패스워드 ⑴ /etc/passwd에서관리자계정인 root에대한정보 root : x : 0 : 0 : root : /root : /bin/bash 1 ➁ ➂ ➃ ➄ 6 7 1 사용자계정을나타낸다. ➁ 패스워드가암호화되어 shadow 파일에저장되어있음을나타낸다. ➂ 사용자번호로관리자이므로 0번이다. 일반사용자는 500번부터시작한다. ➃ 그룹 ID다. 관리자그룹으로 0번이다. ➄ 실제이름이다. 시스템설정에별다른영향이없다. 아무이름을입력해줘도됨 6 사용자의홈디렉토리를설정. 관리자므로홈디렉토리가 /root 이다. 일반사용자일경우 /home 디렉토리하위에위치한다. 7 사용자의쉘을정의한다. 기본설정은 bash 이다. ⑵ /etc/shadow 에서암호화되어있는패스워드정보 root : $6$A0jLq/tMpj1L17w8$QBcY5ZI18Z/r : 15258 : 0 : 99999 : 7 : : : : 1 ➁ ➂ ➃ ➄ 6 7 8 9 1 사용자계정을나타낸다. ➁ 암호화된사용자의패스워드가저장된다. 시스템마다조금씩다른데, 레드햇의경우에는 MD5 형식으로저장된다. 플랫폼에따라 SHA512, SHA256 등의다른형식으로저장될수있으며, 해시방법을선택할수있다. $ 은토큰이며, 첫번째는해시방법 0-DES, 1-MD5, 2-Blowfish, 5-SHA-256, 6-SHA512, 두번째는 SALT, 세번째는해시된문자열이다. ➂ 1970년 1월 1일부터계산하여마지막으로패스워드를바꾼날짜까지의값이다. ➃ 패스워드를바꾸기전에패스워드를사용한기간이다. ( 일 ) ➄ 패스워드를바꾸지않고최대한사용할수있는기간이다. ( 일 ) 6 패스워드최대사용기간에가까워질경우사용기한며칠전에경고를보낼것인지지정한다. 7 계정에대한사용제한을설정하고며칠후에완전히사용정지할지설정한다. 8 1970년 1월 1일부터계정이완전사용정지된기간을계산한값이기록된다. 9 관리자가임의로사용할수있는부분이다. ⑶ pwconv, pwunconv - pwunconv 명령은 shadow에저장된패스워드를 passwd 파일에저장되게한다. - pwconv 명령은 passwd 파일에저장된암호화된패스워드를 shadow 파일에옮길수있다. 4
2.2 리눅스패스워드크래킹 실습 - 실습환경 / 시나리오 OS : CentOS 6.0 Program : white_linux Scenario : Password와 Salt 값을이용하여실제적용되는패스워드를생성해본다 - 실습 1 /etc/shadow 에서 crypttest 계정생성, 패스워드는임의설정 ➁ /etc/shadow 에서 crypttest 의내용 ➂ white_linux.c 에서패스워드와 salt 값수정 4 컴파일후실행 ( gcc -o white_linux white_linux.c -lcrypt ) /etc/shadow 내용과같음을확인할수있음 5
실습 - 실습환경 / 시나리오 OS : CentOS 6.0 Program : John-the-ripper Scenario : Linux에서패스워드파일을획득하여크래킹을수행해본다. - 실습 1 John-the-ripper 설치 ⅰ. John-the-ripper Source 파일획득 wget http://www.openwall.com/john/g/john-1.7.8.tar.gz ⅱ. 압축을풀고압축이풀린폴더의 john-1.7.8/src 폴더로이동한다. tar -zxvf john-1.7.8.tar.gz cd zohn-1.7.8/src ⅲ. John-the-ripper 에서 SHA-512 decrypt 를가능하게추가설정 john-1.7.8/src/makefile 에추가 john-1.7.8/src/john.c 에추가 crypt_fmt.c 파일생성하고내용삽입 ( 파일로배부 ) ⅳ. 컴파일을위한명령실행 make 6
make linux-x86-any ⅴ. john-1.e 사용법확인 ➁ 테스트계정생성및패스워드설정 ⅰ. 패스워드크래킹을위한테스트계정들추가 useradd user passwd user ⅱ. /etc/shadow 확인하여추가한계정의 SHA512 로해시된패스워드를확인할 수있다. ➂ 패스워드추출 ⅰ../unshadow /etc/passwd /etc/shadow > passwd.txt 7
ⅱ. cat passwd.txt 를통해추출한내용확인 ➃ 패스워드크래킹 - 사전대입법 ⅰ. 사전파일 (password.lst) 에테스트계정의패스워드를미리넣어둔상태로패스워드크래킹을시도해보자 john --wordlist=[dictionary File] /etc/shadow ➄ 패스워드크래킹 - 무작위대입법 ⅰ. 무작위대입법을이용한공격은 --wordlist 옵션없이바로실행한다 결과는 john.pot 파일을통해확인할수있다. 8
Chapter 3. 윈도우인증과패스워드 3.1 윈도우의인증의구성요소 Ⅰ. 윈도우인증의구성요소 - 윈도우의인증구조 ⑴ Winlogon - Winlogon.exe - 윈도우로그인프로세스의한부분 ⑵ GINA(Graphical Identification and Authorization) - msgina.dll - Winlogon 내에서 msgina.dll 을로딩시켜사용자가입력한계정과암호를 LSA 에게 전달한다. ⑶ LSA(Local Security Authority) - lsass.exe - LSA는모든계정의로그인에대한검증을하고, 시스템자원및파일등에대한접근권한을검사한다. 로컬, 원격모두해당한다. 또한이름과 SID를매칭하며, SRM이생성한감사로그를기록하는역할도한다. 즉, NT 보안의중심요소며, 보안서브시스템 (security subsystem) 이라고부르기도한다. ⑷ SAM(Security Accounts Manager) - SAM은사용자 / 그룹계정정보에대한데이터베이스를관리한다. 사용자의로그인입력정보와 SAM 데이터베이스정보를비교하여인증여부를결정하도록해주는것이다. - 윈도우 SAM 파일의위치 - %SystemRoot%\system32\config\sam 윈도우 SAM 파일은윈도우를이용하여시스템을부팅시킨경우에접근 제한으로읽을수없는파일이다. 9
⑸ SRM(Security Reference Monitor) - SAM이사용자의계정과패스워드가일치하는지를확인하여 SRM에게알려주면, SRM은사용자에게고유의 SID(Security Identifier) 를부여한다. 또한 SRM은 SID에기반하여파일이나디렉토리에접근 (access) 제어를하게되고, 이에대한감사메시지를생성한다. - 일반적인 SID 구조 Windows Resouce Kit 의 getsid 툴이나 whoami 툴을사용한다. S - 1-5 - 21-1409082233 - 436374069-839522115 - 500 1 ➁ ➂ ➃ 1 해당시스템이윈도우시스템임을나타낸다. ➁ 시스템이도메인컨트롤러거나단독시스템 (stand-alone system) 임을나타낸다 ➂ 시스템의고유한숫자다. 이숫자는시스템을설치할때시스템의특성을수집하여생성된다. ➃ 각사용자별숫자로표현되는고유한 ID다. Administrator 계정은 500번, Guest 계정은 501번, 일반사용자는 1000번이상의숫자를가지게된다. 3.2 로컬인증 Ⅰ. 로컬인증 - Winlogon 화면에서아이디와패스워드를입력하면 LSA 서브시스템이인증정보를받아 NTLM 모듈에아이디와패스워드를넘겨준다. 그리고이를다시 SAM이받아확인하고로그인을허용한다. 10
3.3 인증구조 Ⅰ. Challenge & Response 인증 - 패스워드값을인증서버와같은인증주체에전달하여올바른패스워드임을증명하는가장쉬운방법은패스워드값을직접전달하는것이다. 텔넷이나 FTP가아이디와패스워드를네트워크를통해직접전달하고, 웹포털사이트에서사용자아이디와패스워드로로그인하는것이그러한경우다. - 운영체제인증과같이높은수준의인증이필요한경우, 이런단순인증방식은공격에매우취약하다. 그래서 Challenge & Response 방식으로인증을수용하며, 이방식의인증프로토콜은기본구조가같다. 1 인증요청 - 인증을수행하고자하는주체가인증서버에인증을요청한다. ➁ Challenge 값생성 / ➂ Challenge 값전송 - 인증을요청받은인증서버는문자열등의값을특정규칙을따르거나혹은랜덤하게생성하여인증요구자에전달한다. ➃ Response 값생성 - 인증요구자는서버에서전달받은 Challenge 값과본인이입력한패스워드정보등을이용해서버에보낼 Response 값을생성한다. 대부분의프로토콜이 Response 값을생성하는로직에서차이가난다. ➄ Response 값전송 / 6 Response 값확인 / 7 인증성공 - 인증요구자는생성한 Response 값을인증서버에게전달하고, 인증서버는이 Response 값을확인하여인증요구자가적절한패스워드를소유하고있는지확인한다. 그리고확인된 Response가적절하면인증의성공여부를인증요구자에알린다. 11
3.4 패스워드구조 Ⅰ. LM ( Lan Manager ) - 윈도우에서가장약한인증방법. 윈도우 95, 95, Me 버전에서사용되었고랜에서파일을공유하기위해서사용하는인증방법. 대부분파일공유에패스워드를설정하여사용하는데, 이러한패스워드는아무리복잡하더라도크래킹하는데 10여초이상소요되지않음 - LM 해시알고리즘 1 대문자변환 : LM 방식은사용자가패스워드를입력하면모두대문자로바꾼다. 즉, LM은패스워드의대소문자를구분하지않는다. ➁ 패딩 (Padding): LM은기본적으로 14글자를하나의패스워드로인식한다. 14글자가되지않는패스워드는뒤에 0을붙여 14자리로만든다. ➂ 분리 : LM은패스워드길이에관계없이 8바이트가블록하나를형성한다. 이중 1바이트는패스워드블록에대한정보를담고있어실질적으로패스워드문자열은 7바이트, 즉문자 7개로이루어져있다. 따라서패스워드가 qwer1234라면 8자이므로패스워드블록을두개형성하게된다. ➃ DES 암호화 : 두개의블록으로분리된패스워드는각각 KGS!@#$%" 라는 문자열을암호화키 (Key) 로사용해암호화한다. ➄ 결합 : 암호화한두결과값을합하여 SAM 파일에저장한다. 12
- LM 방식으로구현된패스워드는실질적으로 7 자패스워드의강도와 8 자 패스워드의강도가같다. 즉, 14 자를크래킹하는것은 7 자패스워드를두개 크래킹하는것과같은의미다. 이것이 LM 방식의취약점이다. Ⅱ. NTML - LM 보다는안전하지만취약점이발견되어오래적용되지않았다. LM 해시에 MD4 해시가추가된것외에는큰차이가없다. Ⅲ. NTML v2 - 윈도우비스타이후의윈도우시스템에서기본인증프로토콜로사용되며, LM/NTML과는전혀다른알고리즘으로해시값을생성하며, 복잡도가충분해크래킹하기쉽지않다. 13
3.5 윈도우패스워드크래킹 실습 - 실습환경 / 시나리오 OS : Windows XP Program : Cain & Abel과 Winrten (www.oxid.it 에서다운로드가능 ) Scenario : Windows에서패스워드파일을획득하여크래킹을수행해본다. - 실습 1 테스트계정생성및패스워드설정 - 다양한난이도의패스워드크래킹시도를위해여러가지조합으로패스워드를 설정해본다. ➁ Cain & Abel 을이용한 LM/NTML 해시덤프 & 추출 ⅰ. [Cracker 탭 ] -> 'LM&NTML Hashes' 항목선택 -> 오른쪽빈창에서 마우스오른쪽버튼클릭 -> [Add to list] 메뉴선택 14
ⅱ. Include Password History Hashes 체크 -> Next ⅲ. 로컬시스템에서획득한해시를원하는파일로추출 ⅳ. 다른시스템에서획득한 LM/NTML 해시값덤프하는방법 15
➂ Cain & Abel 을이용한무작위대입공격 ⅰ. [Select All] -> 마우스오른쪽버튼클릭 -> [Brute-Force Attack] -> [LM Hashes] 메뉴선택 - 윈도우 XP 의경우 LM 해시와 NTLM v2 해시모두크래킹대상이될수있지만, LM 해시가더취약하기때문에 LM 해시를대상으로패스워드크래킹을수행한다. ⅱ. 패스워드크래킹옵션선택 - 무작위대입공격을수행하기위한상세옵션을선택한다. 패스워드길이는 LM 해시크래킹을선택했으므로, 기본적으로 1~7자리이며사용할문자열을선택할수있다. LM해시는대소문자를구분하지않으므로, 문자열은대문자알파벳, 숫자, 특수문자를포함한다. 16
ⅲ. 크래킹되는패스워드확인 - LM 해시는패스워드가 7자리가넘는계정의경우패스워드블록 2개로나누어지는데, 아래그림과같이뒷블록의패스워드가먼저크래킹되어나오는것을확인할수있다. ⅳ. 크래킹되는패스워드확인 - <Stop> 버튼을누르면패스워드중현재까지크래킹된부분을확인할수있다. ➃ 윈도우 XP NT/NTLM, 레인보우테이블을이용한패스워드크래킹 ⅰ. Wintrgen 을실행한뒤 <Add Table> 버튼을누른다. - Winrtgen 프로그램을이용해레인보우테이블을생성해사용할수있다. 17
ⅱ. 레인보우테이블생성을위한설정 - Hash는 lm' 으로, Charset은 alpha-num-symbol14' 로선택한다. No of table에서레인보우테이블의크기를결정할수있는데, Charset이 alpha-num-symbol14' 일경우테이블이 35개는되어야화면과같이성공률이 98.33% 가된다. 테이블의갯수에따라성공율이달라진다. <Benchmark> 버튼을누르면레인보우테이블을생성하며소요시간등을확인할수있다. <OK> 버튼을누르면진행한다. ⅲ. 레인보우테이블생성 18
➄ 생성한레인보우테이블을이용한패스워드크래킹 ( Cain & Abel ) ⅰ. 모든계정선택 -> 마우스오른쪽버튼 -> [Cryptanalysis Attack] -> [LM Hashes] -> [via RainbowTables (RainbowCrack) 메뉴선택 ⅱ. <Add Table> 버튼을눌러생성한레인보우테이블을선택 -> <Start> 로 크래킹을시작한다. 6 LM 과같은방식으로 NTML v2 무작위대입공격과레인보우테이블을이용한 공격을실행해보자. 19
Chapter 4. 서비스인증시스템공격 4.1 FTP 서비스데몬패스워드크래킹 Ⅰ. FTP 프로토콜인증과정 - 접속과정 Ⅱ. FTP 서비스계정, 패스워드크래킹 실습 - 실습환경 / 시나리오 OS : CentOS 6.0, Program : white_ftp(125.128.26.113), AlFTP-server(192.168.14.100) Scenario : FTP 서버를구축하고서비스데몬에패스워드크래킹을시도한다. 20
1 FTP 서버설정 ➁ 컴파일후 white_ftp 실행 ( gcc -o white_ftp white_ftp.c -lpthread ) ⑴ 공격대상서버재지정 공격대상의서버아이피를다시지정한다. ⑵ 공격대상서버의최대세션체크 공격하고자하는대상의 FTP 서버가한아이피에최대몇개의세션까지 연결을허용하는지확인한다. ⑶ 프로그램종료 (QUIT) 툴을종료한다. [One Process] Sequence Brute Forcing Attack 하나의소켓 ( 세션 ) 을이용하여지정한최소자릿수부터최대자릿수까지 21
순차로무차별대입공격을실행한다. ex) 2 자리일경우 00 -> 01 -> 02 ->... -> 0y -> 0z -> 10 -> 11 -> 12 ->... [One Process] Random Brute Forcing Attack 하나의소켓 ( 세션 ) 을이용하여지정한최소자릿수부터최대자릿수까지지정한알고리즘대로무차별대입공격을실행한다. ex) 6자리일경우 ⅰ. 1, 3, 5번째자리에있는문자를랜덤으로삽입한다. (x, ^, R) ⅱ. rand3.txt 파일에해당목록이있는지확인한다. ⅲ. 있으면다시 ⅰ로돌아간다. ⅳ. 없으면나머지 1, 3, 5번자리는고정 2, 4, 6번자리는순차로무차별대입공격을실행한다. x0^0r0 -> x0^0r1 -> x0^0r2 ->... -> x0^0ry -> x0^0rz -> x0^1r0 -> x0^1r1 ->... ⅴ. 조합할수있는모든조합을대입하였으면다시 ⅰ로돌아가서반복한다. [One Process] Dictionary Attack 하나의소켓 ( 세션 ) 을이용하여사전대입공격을실행한다. 패스워드파일은 wordlist.txt 이다. [Multi Threading] Sequence Brute Forcing Attack 쓰레드를여러개생성하여순차대입공격을실행한다. ⅰ. 최대연결가능한세션을확인한다. ⅱ. 공격할최소자릿수부터최대자릿수까지만연결가능한쓰레드를실행한다. [Multi Threading] Random Brute Forcing Attack 쓰레드를여러개생성하여무차별대입공격을실행한다. ⅰ. 최대연결가능한세션을확인한다. ⅱ. 연결가능한세션만큼쓰레드를사용하여 [One Process] Random Brute Forcing Attack 공격을실행한다. [Multi Threading] Random Brute Forcing Attack + 첫글자소문자 쓰레드를여러개생성하여무차별대입공격을실행한다. 와다른점은 랜덤값을생성할때맨앞문자는소문자로고정하는것이다. 4.2 Telnet 서비스데몬패스워드크래킹 Ⅰ. Telnet 프로토콜인증과정 ⑴ Telnet 프로토콜 - 상이한운영체제호스트간의원격로그인 22
- NVT(Network Virtual Terminal) 원격컴퓨터에접근하는절차는복잡하다. 이는모든컴퓨터와운영체제가특별한문자들의조합을토큰으로받아들이기때문이다. 예를들어, DOS 운영체제를탑재한컴퓨터에서 end-of-file 토큰은 Ctrl+z이나, UNIX 운영체제의경우 Ctrl+d이다. 만약어떤원격컴퓨터에접근하기원한다면먼저어떤종류의컴퓨터가연결되는지를살펴보고그후에그컴퓨터에서사용되는특정터미널에뮬레이터를설치하여야한다. TELNET은이문제를해결하기위하여네트워크가상터미널 (NVT) 문자집합이라는일반적인터페이스를지원한다. 이인터페이스를통해 TELNET 클라이언트는로컬터미널에서 NVT 형태로들어온문자를번역한다. TELNET 서버는 NVT 형태에서원격컴퓨터가받아들일수있는형태로데이터나명령을번역한다. - 인터넷프로토콜장비를통해사용되는 ASCII 문자의변형으로 8- 비트데이터 전송 - DO, WILL, DONT, WONT를통해옵션을협상한다. WILL: 송신측이옵션을활성화하기를원함 DO: 송신측은수신측이옵션을활성화하기를원함 WONT: 송신측이옵션을비활성화하기를원함 DONT: 송신측은수신측이옵션을비활성화하도록원함 - TELNET 옵션협상의 6 가지시나리오 23
⑵ 접속과정 Ⅱ. Telnet 서비스계정, 패스워드크래킹 실습 - 실습환경 / 시나리오 OS : CentOS 6.0 Program : white_ftp(192.168.14.100), telnet-server(192.168.14.77) Scenario : FTP 서버를구축하고서비스데몬에패스워드크래킹을시도한다. 1 Telnet 서버설치및설정 ⅰ. yum -y install telnet-server ⅱ. /etc/xinetd.d/telnet 파일의 disable 옵션을 no 로설정 ⅲ. /etc/rc.d/init.d/xinetd restart or service xinetd restart 명령으로슈퍼데몬 재시작 ⅳ. telnet root 로그인제한푸는법 /etc/pam.d/remote 파일에서아래부분을주석처리하고 xinetd 데몬재시작 24
➁ Telnet 서비스데몬패스워드크래킹 ⅰ. white_telnet.c를열어서 main() 함수의내용을공격할형식대로고친다. ex) 59.5.12.0 대역을공격할경우 a = 59, b = 5, c = 12 ⅱ. white_telnet.c 를열어서 main() 함수의내용을공격할형식대로고친다. ex) 90 번호스트부터 110 번호스트를스캔할경우 25
ⅲ. white_telnet.c 를컴파일한다. gcc -o white_telnet white_telnet.c ⅳ. white_telnet 을실행한다. 해당호스트대역을스캔하는내용 타겟을잡은호스트에패스워드크래킹을하는내용 - telnet에서로그인실패시응답이오는시간이매우길기때문에 select() 함수를이용하여정해진응답시간에로그인인증내용이도착하지않을경우연결을해제하고다시접속하여협상과정을거친후 id, password를대입하여성공했을경우 Last login: 메세지와함께쉘이뜨는것을확인할수있다. 26
Chapter 5. 운영체제별관리자패스워드변경 5.1 패스워드복구 Ⅰ. 패스워드복구란? - 운영체제를사용할경우종종관리자의패스워드를분실하는경우가생긴다. 이를대비해각운영체제별패스워드복구하는방법이있다. 관리측면에유용하지만해커의입장에서는패스워드를크래킹할좋은방법중하나이기때문에주의해야한다. 5.2 윈도우패스워드복구 - Windows는 SAM(Security Account Manager) 파일을이용하여시스템인증을한다. SAM 파일은유닉스나리눅스처럼텍스트파일의형태가아니므로직접조작하기어렵다. 그렇기때문에일반적으로 Windows의관리자계정에대한패스워드를잃어버리면복구가힘들다. 실습 - 실습환경 / 시나리오 OS : Windows XP Program : ERD Commander v5.0 by 2011 Scenario : Windows 패스워드분실시이를복구할수있다. - 실습 1 ERD Commander 를이용하여부팅시 HDD 의 OS 목록내용이표시된다. 2 ERD Commander 를이용하여부팅한화면 27
3 관리자패스워드변경 ( Start -> System Tools -> Locksmith 선택 ) ➃ 설정후재부팅하게되면새로변경한관리자패스워드를사용하여로그인가능하며아래는기타툴에대한기능들이다. Crash Analyzer : 발생된덤프를분석 Disk Commaner : 윈도우탐색기와비슷한기능. 파일복사등의작업가능 Disk Wipe : 미국방성이요구하는하드디스크파기에적합한하드디스크초기화 File Restore : 휴지통에서삭제된파일복구 Hotfix Uninstall : 현재설치된 Hotfix 확인및제거가능 28
LockSmith : 로컬사용자계정의암호재설정 System File Repair : 윈도우시스템파일을초기화상태로설정 System Restores : 시스템복원기능으로존재하는복원지점으로복원가능 5.3 리눅스패스워드복구 - Root의패스워드를변경하기위해서는 /etc/passwd의내용을수정해야한다. 하지만 Root 패스워드를모르기때문에 GRUB을이용하여 Single User Mode로접근해야한다. 실습 - 실습환경 / 시나리오 OS : CentOS 6.0 Program : CentOS Linux System Scenario : Linux 패스워드분실시이를복구할수있다. - 실습 1 리눅스부팅시부팅화면초기에아무키나누르면아래와같은화면이나온다 ➁ e(edit)" 를누르면다음과같은화면이나온다. 커널을선택하고다시 "e" 를 누른다. ➂ GRUB 모드에서싱글모드로들어가기위해마지막에 single 이란단어를 추가하고엔터키를누르고 b(boot)" 키를누른다. ➃ Single User Mode 로접근하면인증과정없이관리자의쉘을얻게된다. 29
➄ /etc/passwd 파일에서 root 의 2 번째필드값 (x) 를지우고저장한뒤재부팅한다 root 로로그인시설정된 Password 가없기때문에인증과정없이로그인된다. 30