디지털포렌식연구제 3 호 (2008.11) 윈도우인증암호우회기법 * 방제완, 이상진고려대학교정보경영공학전문대학원 A Method for Bypassing Window Authentication* Je-Wan Bang, Sang-Jin Lee Graduate School of Information Management and Security, Korea University 요약,... IEEE-1394[1] Interface SAM[2]. ABSTRACT In online live system where the operating system is under operation, volatile data that cannot be attained through storage such as process table and memory range information can be achieved. However, contents of the storage are collected when user Authentication is not made or system access is impossible in case of locked Windows system after cutting off the power. Through this process, live data with possibility of Authentication are lost. Therefore, this paper observes information used for user Authentication in Windows system and allows to achieve volatile data in live system needed for Authentication bypassing Window Authentication tool based on IEEE-1394 through account information modified with physical memory direct access and SAM file. Keywords : Digital forensics, Digital Investigation, Window Authentication, IEEE-1394 * 본연구는지식경제부및정보통신연구진흥원의 IT 신성장동력핵심기술개발사업의일환으로수행하였음. [2007-S019-02, 정보투명성보장형디지털포렌식시스템개발 ] 교신저자 : jwbang@korea.ac.kr
94 Ⅰ 디지털포렌식절차는조사준비, 증거물획득, 증거물보관및이송, 증거분석, 보고서작성단계 [3] 로이루어진다. 이절차중사고발생현장에서즉각적으로수집하도록권고되는것이휘발성데이터이다. 휘발성데이터는부팅된후운영체제에의해동작되고있는온라인상태의시스템에서시스템이종료되면사라지는정보를말하며대표적인휘발성데이터로물리메모리영역을들수있다. 물리메모리영역에는증거로활용될수있는프로세스정보와이름, 사용자계정, 비밀번호, 전자메일주소등의정보를담고있다 [4]. 또사용자의행위를감추기위해와이핑과같은안티포렌식기법을사용하여저장매체상에서완전삭제한파일의잔여데이터를취득할수있는가능성이있다 [5]. 하지만사용자인증이이루어져있지않거나잠긴상태의윈도우시스템의경우시스템에접근할수없어전원차단후일반적인저장매체수집과정을거친다. 이를통해증거가능성을가질수있는라이브데이터가유실되게된다. 이문제를해결하기위해 IEEE-1394 를이용하여인증담당서비스의프로세스영역을수정하여인증을우회하는방식이제안 [6] 되었으나윈도우 XP 만을대상으로지원하며라이브러리에종속적인기법으로범용성이부족하다. 본논문은인증이필요한라이브상태시스템의휘발성데이터취득을위해 IEEE-1394 의 DMA 를통한물리메모리직접접근과메모리영역의윈도우계정인증정보변경을이용하여다양한윈도우시스템을지원할수있는인증우회도구의설계및구현에관해다루고자한다. Ⅱ 윈도우시스템은인증암호를 lanman(lan Manager) hash 방식과 NT hash 방식으로저장 [7] 한다. 즉, 윈도우시스템은사용자인증에사용되는패스워드를 hash 로변환하여저장하며인증시변환되어저장된 hash 값과비교하여로그인을수행한다. lanman hash 는 LAN Manager 운영체제에서사용되기위해만들어졌으며새로운알고리즘을사용할수없는구버전의소프트웨어및하드웨어와의호환성을위해최신버전에도포함되어있다. lanman hash 생성단계는다음과같다. 1. LM hash [7] 1. 사용자암호를 14 바이트로구성 14 바이트이상 - 14 바이트로자름 14 바이트이하 - 14 바이트로구성되도록나머지를 null 로대체
95 2. 입력된 14 바이트의사용자암호를대문자로전환 3. 7 바이트 (56bit) 의 chunk 로분할 4. 각 7 바이트의 chunk 를암호화키로사용하여고정문자열을 DES 로암호화 5. 각결과물을하나로연결하고 LM Hash 로저장 NT Hash 는 MD4 알고리즘을사용하며 NT 4.0 및이전도메인과윈도우 2000 및상위 Active Directory 도메인의구성원인증을위해사용된다. 2. NT Hash [7] Unix, Linux, Mac 시스템은인증을위한정보생성시 salt 값을사용하여다른사용자가동일한암호를사용하여도다른암호정보를저장하도록설계되어있지만윈도우시스템은설계당시 hash 값에대한접근권한제한이있다는이유로 salt 값을사용하지않도록설계되어있다. 즉윈도우시스템은동일한암호를사용할경우동일한 hash 값을저장하고있으며 hash 정보추출을통해전수조사공격을가능하게한다. 전수조사를더효율적으로하기위해 hash 값을계산하여대입하지않고미리계산된 hash table 을메모리상에올려 TMTO(Time-Memory Trade-Off) 를이용하여빠른시간에원래의값을찾아내는방식으로 Rainbow Table 을이용하는방식이있지만이미추출된 hash 정보를소유하고있어야하기때문에잠김상태의시스템을대상으로증거수집단계에서적용하기는어려움이있다. Ⅲ 3.1.1 IEEE-1394 3. IEEE-1394 Interface
96 Firewire, i.link라고불리는 IEEE-1394는디지털캠코더, HDTV 등의오디오 / 비디오기기에사용되는시리얼버스이다. IEEE-1394a는 100, 200, 400Mbps의속도로패킷을전송할수있으며, IEEE-1394b 규약에는 3.2Gbps까지규약으로정의되어있다. IEEE-1394는 Asynchronous 전송과 Isochronous 전송을지원 [1] 한다. Asynchronous 전송은대상노드의주소를지정하여일대일통신을하는전송방식으로디바이스에제어명령을전송하기위해주로사용되며 Isochronous 전송은채널을점유하여일정한주기를가지고단방향브로드캐스트전송을하는방식으로스트림데이터와같은대용량의데이터를전송하는용도에사용된다. 또전송속도가서로다른노드들사이에서도중재를통해하나의버스를통하여전송이가능하며, 효율적인전송이보장되도록버스초기화과정에서버스대역폭조절이가능하다. IEEE-1394와같은 DMA(Direct Memory Access) 버스마스터장치는 CPU와독립적으로동작한다. DMA는 CPU가다른태스크를수행하는동안장치와프로세스들사이에서메모리전송을허용한다. 즉, CPU는 IEEE-1394와같은버스마스터장치가특정메모리영역을읽도록 DMA 컨트롤러에명령을내린순간다른태스크를수행할수있는자유로운상태가된다. 명령이완료된후에도 CPU는수행완료에대한보고를받을필요가없도록설계되어있다 [8]. 3.1.2 IEEE-1394 Open Host Controller Interface 4. 64bit Memory space[9] IEEE-1394는 64bit의주소공간을가지는 Control and Status Registers(CSRs) Architecture를따른다. 상위 10bit는 bus ID를 6bit는 node ID를나타내고하위의 48bits의주소공간은연산등록에사용되며, 상위레벨드라이버만접근할수있다 [9]. 5. IEEE-1394 OHCI Node offset map[9]
97 CSR registers의변경을통해물리영역에대한직접적인접근권한을얻을수있으며 Host Controller에의해직접적인읽기, 쓰기명령을내릴수있다. CSR registers 변경을위해서는직접 [ 그림 4] 의하위 48bits 구성을통해 [ 그림 5] 의 CSR Space 영역의조작이필요하다 [9]. 6. CPU OS 위와같은특성을이용하여 [ 그림 6] 과같이 IEEE-1394 장치는 CPU의제어를받지않고 DMA 컨트롤러를통해물리메모리영역에대한직접읽기, 쓰기명령을수행할수있다. Maximillian Dernsief(at PacSec 2005)[10] 는 ipod의 IEEE-1394 Interface를이용해시스템의메모리영역에접근할수있음을보였으며 Adam Boileau(at Ruxcon 2006)[6] 는메모리상의인증을담당하는라이브러리를수정하는방식의윈도우 XP에서의인증우회기법을제안하였으나라이브러리버전에종속적인수정방식으로범용성이부족한점이있다. 3.2.1 레지스트리는사용자, 응용프로그램, 하드웨어장치정보와같은시스템구성에필요한정보를저장하는데이터베이스이다. 레지스트리에는각사용자의프로필, 컴퓨터에설치된응용프로그램과각응용프로그램이작성할수있는문서유형, 폴더및응용프로그램아이콘의속성시트설정, 하드웨어, 사용되고있는포트등작동중시스템에서지속적으로참조하는정보가들어있다. 레지스트리계층구조의맨위에위치하는키, 하위키및값의집합을하이브라고하며파일로관리된다. 각하이브파일은 %SystemRoot%\System32\Config에존재하며현재로그인되어있는사용자에대한구성정보를담고있는 HKEY_CURRENT_USER 항목의경우만 %SystemRoot%\Profiles\Username 위치에존재한다. 레지스트리하이브파일의각항목의내용은 [ 표 1] 과같다.
98 1. HKEY_LOCAL_MACHINE\SAM 사용자계정정보 Sam, Sam.log HKEY_LOCAL_MACHINE\Security 보안설정정보 Security, Security.log HKEY_LOCAL_MACHINE\Software 소프트웨어설정정보 Software, Software.log HKEY_LOCAL_MACHINE\System 시스템설정정보 System, System.log 사용자인증과정을수행하는서비스에서참조하는 lanman/ntlm Hash 값은 SAM 하이브파일에존재한다. 3.2.2 SAM 사용자인증에사용되는 lanman/ntlm Hash의값은 SAM 파일의 \HKEY_LOCAL_MACHINE \SAM\SAM\Domains\Account\Users\%RID%\V 항목에저장되어있다. V Key는항목의위치와크기를담고있는 offset field와그정보를바탕으로찾을수있는 data field로구성되어있다. 7. offset field offset field는각 12bytes로이루어져있으며 [ 그림 7] 과같이각데이터에대한위치와크기정보를표현한다. 각항목의첫 4bytes는해당데이터의 offset을나타내며 V Key의시작으로부터 0xCCbytes를더하여위치를계산한다. 다음 4byte는데이터의길이를나타내며마지막 4byte는 unknown field 이다. [ 그림 7] 의 NT Password hash 항목의경우 [ 그림 8] 과같이 V Key의시작으로부터 0x01F8(0x012C + 0xCC)bytes 이후의위치에서 0x14bytes 길이의해당데이터값을확인할수있다.
99 8. data field : NTLM Password Hash SAM 파일에저장되어있는 lanman/ntlm Password Hash 값은앞부분의 0x04Bytes의 Header와 Password Hash 값 0x10bytes을더하여총 0x14bytes의데이터로표현된다. 해당계정의비밀번호가활성화되어있을시는 Hash 값을포함한 0x14bytes의데이터가존재하며비밀번호가비활성화가되었을시에는 Header 정보 0x04bytes만존재한다. 경우에따라 LM Hash는생성되지않아 0x04bytes의 Header 정보만가지고있을수있다. 인증과정을담당하는 lsass.exe와같은서비스는위의형식을가진데이터를메모리영역에가지고있다. 이점을이용하여 offset field의 lanman/ntlm Password Hash의 Length 영역을 0x04로변경하여인증비밀번호를비활성화하거나 data field의 Hash 값을수정하여원하는비밀번호로변경 [11] 할수있다. 윈도우즈 2000/XP/2003/Vista 모두동일한구조를가지고있으며위의데이터영역수정을통해사용자인증의비활성화가가능하다. Ⅳ IEEE-1394의직접적인물리메모리영역접근과 SAM의사용자인증정보를바탕으로사용자인증우회도구를구현하였다. 사용자인증우회도구는다음과같은과정을통해이루어진다. 인증우회를위한영역을메모리에서직접검색하는것보다메모리영역수집후 Host System 내에서검색하는것이더속도가빠르다. 이를위해 Adam Boileau[6] 의 raw1394.py Module를사용하여 Python Script로대상시스템의물리메모리영역을읽어수집하도록구성하였다.
100 9. 'V' Key Signature offset field의첫 12bytes인 0x00000000BC00000002000100 값은 V' Key 데이터시작위치를확인할수있는고유한값이다. 이값을 Signature로이용하여수집된메모리의사용자인증과정에사용되는 V Key 영역을찾는다. 윈도우시스템은사용이끝난메모리영역을초기화하지않으므로 [12] 사용자가첫로그인수행시에남아있던프로세스영역이나잠금상태로전환시에재인증을수행하기위한프로세스영역등에서 Signature를확인할수있다. 검색된 Signature를기준으로각 160bytes, 170bytes 떨어진곳에 lanman Password Hash와 NTLM Password Hash의 Length 값을가지고있다. 대상시스템의물리메모리영역을대상으로이위치의값을 0x04로수정함으로인증비밀번호를비활성화시킬수있다. 2. lanman/ntlm Password Hash def Disableaccount(node, offset, value): try: print "\npatching: 0x%08x" % (offset+160) node.write(offset+160, value ) except IOError: print "\naccess Error 0x%08x on node: %d" % (offset+160, node.number) try: print "Patching: 0x%08x" % (offset+172) node.write(offset+172, value ) except IOError: print "\naccess Error 0x%08x on node: %d" % (offset+172, node.number) return 1 위의 3 단계의과정을통해 SAM의 V' Key의 lanman/ntlm Password Hash 정보를수정하여사용자인증을비활성화시킬수있으며해당계정으로비밀번호없이인증을가능하게
101 하였다. 또한 lanman/ntlm Password Hash 값을따로저장하여 Rainbow Table 을통한전수조사에 활용할수있도록하였다. 인증우회에소요되는시간은 Pentium 4 2GHz, 1GB RAM 환경의호스트시스템에서 3GB의타겟시스템을대상으로약 5분정도가소요됨을확인하였다. 10. Ⅴ 사용자인증이이루어져있지않거나잠긴상태의윈도우시스템의경우시스템에접근할수없어전원차단후일반적인저장매체수집과정을거친다. 휘발성데이터인물리메모리영역에는증거로활용될수있는프로세스정보와사용자이름, 계정, 비밀번호, 전자메일주소, 대화내역등의정보를담고있지만시스템이종료되면사라지기때문에취득이불가능하다. 이의문제를해결하기위해서 IEEE-1394의 DMA를통한물리메모리직접접근과윈도우계정인증정보의특성을이용하여윈도우시스템인증우회도구를구현하였다. 구현된도구를사용하여 IEEE-1394 Interface가장착된윈도우 2000/XP/2003/Vista의시스템에서인증우회를통해로그인이필요한잠긴상태시스템의활성데이터수집에활용할수있는방안을마련하였다. 또인증우회만이아닌직접적인특정프로세스영역추출, Signature Carving을통한사용자계정정보와메신저대화내역정보추출에대한연구를진행하고있으며수사환경에적합하도록 Linux 기반이아닌윈도우기반통합수사시스템구현을진행하고있다.
102 [1] IEEE1394, Standard for High Performance Serial Bus, 1995. [2] Microsoft, 2006b Microsoft, Registry, Microsoft TechNet, http://www.microsoft.com/ technet/scriptcenter/scripts/os/registry/default.mspx, 2006. [3] RFC3227, "Guidelines for Evidence Collection and Archiving", Available from http://www.faqs.org/rfcs/rfc3227.html, 2002. [4] S. Stover and M. Dickerson, Using Memory Dumps in Digital Forensics, Login: Magazine 30, no 6, 43 48, Dec 2005. [5] S Lee, A Savoldi, S Lee, J Lim, Windows Pagefile Collection and Analysis for a Live Forensics Context, Future Generation Communication and Networking, 2007. [6] Adam Boileau Hit By A Bus: Physical Access Attacks with Firewire Security- Assessment.com, Ruxcon, 2006. [7] Microsoft, 2006a Microsoft, Where NT stores passwords, Microsoft TechNet, http://www.microsoft.com/technet/archive/winntas/tips/winntmag/storpass.mspx, 2006. [8] Dobb Anderson, FireWire System Architecture, Addison Wesley, 1999. [9] 1394 Open HCI, 1394 Open Host Controller Interface Specification Release 1.1, Jan 2000. [10] Michael Becher, Maximillian Dornseif, and Christian N. Klein. Firewire - all your memory are belong to us, CanSecWest. 2005. [11] Petter Nordahl-Hagen, The Offline NT Password Editor, http://home.eunet.no/pnordahl/ntpasswd [12] Jim Chow, Ben Pfaff, Tal Garfinkel, Mendel Rosenblum, Shredding Your Garbage: Reducing Data Lifetime Through Secure Deallocation. 14th USENIX Security Symposium, July/August 2005.
103 著者紹介 방제완 (Je-Wan Bang) 2007 년 2 월 : 한세대학교정보통신공학학사 2007 년 ~ 현재 : 고려대학교정보경영공학전문대학원석사과정 < 관심분야 > 디지털포렌식, 소프트웨어역공학분석, 임베디드시스템 이상진 (Sang-Jin Lee) 1987 년 2 월 : 고려대학교학사졸업 1989 년 2 월 : 고려대학교석사졸업 1994 년 8 월 : 고려대학교박사졸업 1989 년 10 월 ~1999 년 2 월 : ETRI 연구원역임 1999 년 3 월 ~ 현재 : 고려대학교정교수 1997 년 12 월 : 국가안전기획부장표창 < 관심분야 > 디지털포렌식, 모바일포렌식, 심층암호, 해쉬함수