#3 MINICHALL (SEARCH WORD) REPORT 작성자: 이준환 (hadnwrote1 (at) naver.com) 작성일 : 2014. 04. 18 안녕하세요! 정보보호학을전공하는학생이준환이라고합니다. 이번 FORENSIC-PROOF 미니챌린지#3 리포트 를제출합니다. 잘못된점은지적해주시면감사하겠습니다. #3 MINI CHALLENGE 문제는위와같습니다. 문제를딱보았을때에생각난키워드를아래적어보았습니다. 1) 사용자가웹브라우저에서타이핑한검색어를얻어내는방법 - index.dat 2) 검색어를얻어내는방법이사이트마다다른가? - 네이버: query=, 구글: q= 3) 영문과한글을얻어낼때고려할점? - 인코딩 4) 그외의검색어를얻어낼때주의할점은? -?!! 1) 사용자가웹브라우저에서타이핑한검색어를얻어내는방법 문제를보고가장먼저생각난것이 index.dat 파일입니다. index.dat은 IE에서사용하는 Web Browser Artifacts 1) 파일인데사용자가방문한웹사이트의 URL 과웹페이지리스트가저장됩니다. 웹브라우저에서타이 핑한검색어를포함한 URL 을가지고있습니다. IE9까지는 index.dat으로 Web Browser Artifacts를저장하며위 치는 OS기본폴더구조에따라서약간다르나 index.dat 로저장하는것은같습니다. 그리고 IE10이기본으로 내장된윈도우8에서는 Web Browser Artifacts를 index.dat이아닌 WebCacheV##.dat 로저장합니다. 아래는 Web Browser Artifacts 파일중히스토리정보를담고있는 index.dat 파일의저장경로와 index.dat Analyzer로 1 ) 웹브라우저사용로그
본화면입니다. Internet Explorer 6, 7, 8, 9 History %UserProfile%\Local Settings\History\History.IE5\index.dat %UserProfile%\Local Settings\History\History.IE5\<Period>\index.dat %LocalAppData%\Microsoft\Windows\History\History.IE5\index.dat %LocalAppData%\Microsoft\Windows\History\History.IE5\<Period>\index.dat 캐시정보에서도검색어가포함된 URL 을포함할수있습니다. Internet Explorer 6, 7, 8, 9 Cache %UserProfile%\Local Settings\Temporary Internet Files \Content.IE5\index.dat %UserProfile%\Local Settings\Temporary Internet Files \Content.IE5\<Random>\< 모든 File> %LocalAppData%\Microsoft\Windows\Temporary Internet Files\Content.IE5\index.dat %LocalAppData%\Microsoft\Windows\Temporary Internet Files\Content.IE5\<Random>\< 모든 File>
Windows 7/8 Internet Explorer 10, 11 (3개파일중 1 개존재) %LocalAppData%\Microsoft\Windows\WebCache\WebCacheV01.dat %LocalAppData%\Microsoft\Windows\WebCache\WebCacheV16.dat %LocalAppData%\Microsoft\Windows\WebCache\WebCacheV24.dat IE11에서도 IE10과동일하게 WebCacheV##.dat에 Web Browser Artifacts 를저장합니다. WebCacheV01.dat 파일을라이브로복사해서 Clean Shutdown상태로복구후 EseDbViewer(admin) 으로본화
면입니다. 파이어폭스, 크롬, 사파리, 오페라는아래경로에서 Web Browser Artifacts를확인할수있으며지면상로그 확인사진은생략하겠습니다. %UserProfile%\Application Fire Fox History Data\Mozilla\Firefox\Profiles\<Random>.default\places.sqlite %AppData%\Mozilla\Firefox\Profiles\<Random>.default\places.sqlite Fire Fox Cache %UserProfile%\Local Settings\Application Data\Mozilla\Firefox\Profiles\<Random>.default\Cache\_CACHE_MAP_ 외 3개 파일 %UserProfile%\Local Settings\Application Data\Mozilla\Firefox\Profiles\<Random>.default\Cache\< 모든폴더> %AppData%\Mozilla\Firefox\Profiles\<Random>\Cache\_CACHE_MAP_( 같은폴더 안의모든파일필요 ) Chrome History %UserProfile%\Local Settings\Application Data\Google\Chrome\User Data\Default\History %UserProfile%\Local Settings\Application Data\Google\Chrome\User Data\Default\History Index < 년- 월> %LocalAppData%\Google\Chrome\User Data\Default\History %LocalAppData%\Google\Chrome\User Data\Default\History\History Index < 년- 월 > Chrome Cache %UserProfile%\Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\\< 모든파일> %LocalAppData%\Google\Chrome\User Data\Default\Cache\ Safari History %UserProfile%\Application Data\Apple Computer\Safari\History.plist %AppData%\Apple Computer\Safari\History.plist Safari Cache %UserProfile%\Local Settings\Application Data\Apple Computer\Safari\Cache.db %LocalAppData%\Apple Computer\Safari\Cache.db
Opera History %UserProfile%\Application Data\Opera\Opera\global_history.dat %AppData%\Opera\Opera\global_history.dat Opera Cache %UserProfile%\Local Settings\Application Data\Opera\Opera\cache\dcache4.url %LocalAppData%\Opera\Opera\cache\dcache4.url 위정보들을기준으로 Web Browser Artifacts 파일을직접파싱할수도있고여러가지공개된툴을이용해서 사용자가방문한 URL 들을모두수집할수있습니다. 예를들어 index.dat은 WEFA나 NETALANYSIS와같은툴 로보기좋게분석이가능하고문제에서본검색어, 위치정보, 방문페이지, 방문횟수, 방문시간대등을편리 하게확인할수있습니다. 또한 index.dat Analyzer와같이직접적인 index.dat 파서툴이매우많습니다. WebCacheV##.dat파일은 ESE포맷이므로 EseDbViewer로볼수있지만단지파싱만해주는뷰어이므로사용이 불편합니다. NirSoft사의툴로는라이브상태에서도모두볼수있으며 IE 6~10, 크롬, 파이어폭스, 사파리를지 원합니다. 아래는실행모습입니다. 브라우저별로히스토리나캐시에딱히압축이나암호화는없고, 헤더가있는경우도있고없는경우레코드만 나열해놓았고, 또한 SQLite형식으로저장하기도하므로다양하게 URL 을수집하는데어려움은없습니다. 저 같은경우는 strings 를이용하였습니다. IE10와크롬의히스토리내역에서만 URL 을모두추출했습니다. 주브라우저가크롬이라서양이엄청납니다.
URL중에서검색어가포함된 URL 만분류해내야합니다. 파이썬을이용하여 URL 을분석해서구글, 네이버, 다 음에서검색한검색어를추출해보겠습니다. #-*-coding:utf-8-*- #Get Keyword in URL #LeeJunHwan 2014. 04. 18 import urllib head_naver="http://search.naver.com/search.naver?" head_daum="http://search.daum.net/search?" head_google="https://www.google.co.kr/search?" keyword_naver="" keyword_daum="" keyword_google="" f=open('http3.txt','r') while 1: data=f.readline() if not data: try: break if data.find(head_naver)>=0: #false시 -1 리턴 separate=data.split('&') for i in range(0,len(separate)): if separate[i].find('query=')==0: # 찾으면 0 keyword_naver=separate[i][6:] break print "[*] Naver keyword is",urllib.unquote(keyword_naver).decode('utf-8').replace('+',' ') if data.find(head_daum)>=0: separate=data.split('&') for i in range(0,len(separate)): if separate[i].find('q=')==0: # 찾으면 0 keyword_daum=separate[i][2:] break print "[*] Daum keyword is",urllib.unquote(keyword_daum).decode('utf-8').replace('+',' ')
최근검색어이므로뒤부터검사 if data.find(head_google)>=0: separate=data.replace('?','&').split('&') #search? 다음바로 q= 가붙어서 & 로분리가안되므로 & 로대체 for i in range(len(separate)-1,0,-1): # 구글은 q= 가여러번올수있는데마지막이 if separate[i].find('q=')==0 & ~separate[i].find('oq='): keyword_google=separate[i][2:] break print "[*] Google keyword is",urllib.unquote(keyword_google).decode('utf-8').replace('+',' ') except: print "[*] Exception" f.close() 부끄러운코드지만검색쿼리에사용된파라미터를구분해서검색어가포함된파라미터를추출하도록했습니 다. 3) 에서보겠지만코드에는검색어를검색엔진별로정확히디코딩해서보여줍니다. 양이너무많아부사용브라우저인 IE10 만추출해보았습니다. 위의결과처럼깔끔하게디코딩된사용자가 타이핑한검색어결과를볼수있습니다. 2) 검색어를얻어내는방법이사이트마다다른가? 1) 에서보았듯이 URL들을수집했지만어떤 URL이검색어를포함했는지를추출하기위해서는검색엔진별검 색쿼리의규칙을따라주어야합니다.
사이트명도메인검색어변수 GOOGLE google.com q NAVER naver.com query DAUM daum.net q NATE nate.com q BING bing.com q ASK ask.com q AOL aol.com q EXCITE excite.com q LYCOS lycos.com q YAHOO yahoo.com p BAIDU baidu.com #wd 네이버, 야후, 바이두를제외하면검색어변수는모두 q였고대부분도메인바로뒤나 URL맨끝에존재하였습 니다. 사이트마다검색어를얻어내는방법이다르긴하지만대부분비슷한패턴으로추출이가능합니다. 3) 영문과한글을얻어낼때고려할점? 검색어가포함된 URL 의예시입니다. 한글은인코딩되어있습니다. 검색어인코딩디코딩 digital forensic URL http://search.daum.net/search?w=tot&ie=utf-8&q=%ec%9d%b8%ec%bd%94%eb%94%a9 https://www.google.co.kr/#newwindow=1&q=%eb%94%94%ec%bd%94%eb%94%a9 http://msxml.excite.com/search/web?q=digital+forensic 영문검색어의경우별다른인코딩없이아스키코드로잘표현이됩니다. 보기좋게스페이스바가 + 로표시되 는것만바꾸어서결과를추출하면좋습니다. 하지만한글검색어는인코딩을거쳐야합니다. 2) 에제시된표의 사이트들은 EXCITE를제외하고는모두 UTF-8 로인코딩됩니다. EXCITE는 EUC-KR로인코딩이되었으며한글 검색은글자가깨지고결과를보여주지않습니다. 2) 에제시된표의사이트중유니코드방식의사이트는없 었으며 URL파라미터중인코딩기법을 EUC-KR로바꾸고강제로 EUC-KR 로검색을해도가능한곳(DAUM) 이 있었습니다. 디코딩은코드의아래부분을보면쉽게가능합니다. print "[*] Google keyword is",urllib.unquote(keyword_google).decode('utf-8').replace('+',' ') urllib.unquote만사용하면 EUC-KR 형식도디코딩이가능합니다. 4) 그외의검색어를얻어낼때주의할점은? IE 10, 11의경우 WebCacheV##.dat파일의 Dirty Shutdown, Clean Shutdown 상태별로비트수준의차이는분 명있습니다. strings로추출하면몇몇 URL 은길이가짤려서다르게보이는경우도있으므로주의해야합니다. 물론위작업은 Clean Shutdown 상태에서진행했습니다. 검색쿼리문의규칙은검색엔진별로다르고시기에따라달라질수있으므로체크하고업데이트를해줄수있 어야합니다. 네이버나다음, 네이트같은경우검색쿼리의특징이어느정도쉽게보이지만구글이나바이두 는 q= 로검색어를쿼리하는것은명확하나추가적으로검색할때마다이전검색어를포함해서 URL을생성합 니다. 검색어를얻어낼때에정규식을잘못사용해서파싱한다면이러한점을간과해서해당검색어의빈도 율이변할수도있습니다. 또한사용자가 Web Browser Artifacts를삭제하였을때에증거수집이어려우므로
파일을카빙할수있도록대비해야합니다. 브라우저별로시간정보포맷이다르므로공통포맷으로통일하여 적절한타임라인분석과 고생각됩니다. Visit Count를이용한다면검색어추출에대한결과를아름답게꾸밀수있을것이라 부족한리포트지만이번챌린지를통해많은공부를하게되어감사드립니다. 였습니다. 참조문서와툴은아래에표기하 Reference Document 1) 신규운영체제환경에서의 Forensic 기법연구최종보고서 - KISA http://www.kisa.or.kr/public/library/reportview.jsp?regno=019275 2) NetFront Browser 히스토리분석 http://forensic-proof.com/archives/637 3) Index.dat 분석 - FORENSIC PROOF http://forensic-proof.com/archives/243 4) Windows Artifact Analysis: Evidence of... - SANS (History Analysis) - FORENSIC PROOF https://blogs.sans.org/computer-forensics/files/2012/06/sans-digital-forensics-and-incident-response-post er-2012.pdf 5) How to Recover and Interpret Internet Artifacts - MAGNET FORENSICS http://thetrainingco.com/techno-2013-pdf/tuesday/t6%20saliba%20-%20internet%20artifact%20autopsy. pdf 6) Internet Explorer 10 Forensic - MaJ3stY http://maj3sty.tistory.com/1047 7) Web Browser Forensics, Part 1 - Symantec http://www.symantec.com/connect/articles/web-browser-forensics-part-1 8) IE History Tool(Live Forensics) - 보안창고 http://boanchanggo.tistory.com/362 9) 윈도우 8 웹브라우저사용흔적 (Windows 8 Web Browser Artifacts) - FORENSIC PROOF http://forensic-proof.com/archives/4004 10) Internet Explorer History File Format - forensicwiki http://www.forensicswiki.org/wiki/internet_explorer_history_file_format#msie_5_-_9 11) 웹아티팩트포렌식 - pr0neer http://forensic-proof.com/wp-content/uploads/2013/07/fp-%ec%9b%b9-%ec%95%84%ed%8b%b0%ed%8c %A9%ED%8A%B8-%ED%8F%AC%EB%A0%8C%EC%8B%9D-Web-Artifacts-Analysis.pdf 12) IE10 Forensics - blueangel http://forensicinsight.org/wp-content/uploads/2012/09/insight-ie-10-forensics.pdf 13) Web Browser Forensics : Part 1 - blueangel http://forensicinsight.org/wp-content/uploads/2012/03/insight_web-browser-forensics_part1.pdf 14) Web Browser Forensics : Part 2 - blueangel http://forensicinsight.org/wp-content/uploads/2012/03/insight_web-browser-forensics-part-ii.pdf
15) Advanced_Evidence_Collection_and_Analysis_of_Web_Browser_Activity - Junghoon Oh http://www.dfrws.org/2011/proceedings/junghoon_oh_advanced_evidence_collection_and_analysis_of_web_ Browser_Activity.pdf Used Tool 1) Index.dat Analyzer http://www.systenance.com/indexdat.php 2) forecopy https://code.google.com/p/proneer/downloads/list 3) EseDbViewer http://www.woanware.co.uk/forensics/esedbviewer.html 4) WEFA http://4n6tech.com/pro_kr/info/info.php?pn=1&sn=1&dn=4 5) NETALANYSIS http://www.digital-detective.net/digital-forensic-software/netanalysis/ 6) BrowsingHistoryView http://www.nirsoft.net/utils/browsing_history_view.html 7) IECacheView http://www.nirsoft.net/utils/ie_cache_viewer.html 8) Strings http://technet.microsoft.com/ko-kr/sysinternals/bb897439.aspx