<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>min_fo.log</title>
        <link>https://velog.io/</link>
        <description>포렌식을 공부하는 학생입니다.</description>
        <lastBuildDate>Tue, 12 Sep 2023 20:53:02 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. min_fo.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/min_fo" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[윈도우 아티팩트 총정리 및 포렌식 툴]]></title>
            <link>https://velog.io/@min_fo/%EC%9C%88%EB%8F%84%EC%9A%B0-%EC%95%84%ED%8B%B0%ED%8C%A9%ED%8A%B8-%EC%B4%9D%EC%A0%95%EB%A6%AC-%EB%B0%8F-%ED%8F%AC%EB%A0%8C%EC%8B%9D-%ED%88%B4</link>
            <guid>https://velog.io/@min_fo/%EC%9C%88%EB%8F%84%EC%9A%B0-%EC%95%84%ED%8B%B0%ED%8C%A9%ED%8A%B8-%EC%B4%9D%EC%A0%95%EB%A6%AC-%EB%B0%8F-%ED%8F%AC%EB%A0%8C%EC%8B%9D-%ED%88%B4</guid>
            <pubDate>Tue, 12 Sep 2023 20:53:02 GMT</pubDate>
            <description><![CDATA[<h3 id="파일시스템mft-logfile-usnjrnl">파일시스템($MFT, $LOGFILE, $UsnJrnl)</h3>
<h3 id="레지스터">레지스터</h3>
<p>레가 : <a href="http://forensic.korea.ac.kr/tools.html">http://forensic.korea.ac.kr/tools.html</a> </p>
<h3 id="이벤트로그">이벤트로그</h3>
<p>로그 뜻 설명 사이트 : <a href="https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/">https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/</a></p>
<p>MMA(Microsoft Message Analyzer): 개발 중지...</p>
<h3 id="점프파일lnk">점프파일(LNK)</h3>
<p>LECMD :</p>
<h3 id="점프리스트">점프리스트</h3>
<p>JUMPLIST explorer :</p>
<h3 id="프리패치">프리패치</h3>
<p>WinPrefetchView :</p>
<h3 id="뮤캐쉬">뮤캐쉬</h3>
<p>MUICacheView v1.01: <a href="http://www.nirsoft.net/utils/muicache_view.html">http://www.nirsoft.net/utils/muicache_view.html</a></p>
<h3 id="앰캐쉬amcachehve">앰캐쉬(amcache.hve)</h3>
<p>amcacheparser: </p>
<h3 id="쉼캐쉬">쉼캐쉬</h3>
<p>shimdector:
himCacheParser: <a href="https://github.com/mandiant/ShimCacheParser">https://github.com/mandiant/ShimCacheParser</a></p>
<h3 id="썸네일-캐쉬">썸네일 캐쉬</h3>
<p>thumbnaildatabaseviewer: <a href="http://www.itsamples.com/thumbnail-database-viewer.html">http://www.itsamples.com/thumbnail-database-viewer.html</a></p>
<h3 id="아이콘-캐쉬">아이콘 캐쉬</h3>
<p>thumbnaildatabaseviewer: <a href="http://www.itsamples.com/thumbnail-database-viewer.html">http://www.itsamples.com/thumbnail-database-viewer.html</a></p>
<h3 id="윈도우-타임라인">윈도우 타임라인</h3>
<p>WxTcmd: <a href="https://ericzimmerman.github.io/#!index.md">https://ericzimmerman.github.io/#!index.md</a>
Timeline Explorer: <a href="https://ericzimmerman.github.io/#!index.md">https://ericzimmerman.github.io/#!index.md</a></p>
<h3 id="vss-개념-및-실습">VSS 개념 및 실습</h3>
<p>shadowexplorer: 
<a href="https://www.shadowexplorer.com/downloads.html">https://www.shadowexplorer.com/downloads.html</a></p>
<h3 id="window-search">window search</h3>
<h3 id="휴지통-파일">휴지통 파일</h3>
<p>RBCmd: <a href="https://ericzimmerman.github.io/#!index.md">https://ericzimmerman.github.io/#!index.md</a></p>
<h3 id="srum">SRUM</h3>
<p>SrumECmd:
<a href="https://ericzimmerman.github.io/#!index.md">https://ericzimmerman.github.io/#!index.md</a></p>
<h3 id="bam">BAM</h3>
<p>포렌식 툴 존재 x</p>
<h3 id="featureusage">FeatureUsage</h3>
<p>포렌식 툴 존재 x</p>
<h3 id="windows-notification-center">Windows Notification Center</h3>
<p>포렌식 툴 존재 x</p>
<h3 id="기타-포렌식-툴-모음-사이트">기타 포렌식 툴 모음 사이트</h3>
<p>ericzimmerman: <a href="https://ericzimmerman.github.io/#!index.md">https://ericzimmerman.github.io/#!index.md</a>
포렌식 proof: <a href="http://forensic-proof.com/tools">http://forensic-proof.com/tools</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[windows search]]></title>
            <link>https://velog.io/@min_fo/windows-search</link>
            <guid>https://velog.io/@min_fo/windows-search</guid>
            <pubDate>Mon, 14 Aug 2023 14:03:14 GMT</pubDate>
            <description><![CDATA[<p>툴 다우론드 사이트 : <a href="https://drive.google.com/file/d/1QsKLSYXeXw5YkKphm-9HA7dwJ0h9Oiwc/view">https://drive.google.com/file/d/1QsKLSYXeXw5YkKphm-9HA7dwJ0h9Oiwc/view</a></p>
<p>문제 다운로드 : <a href="https://dreamhack.io/wargame/challenges/729">https://dreamhack.io/wargame/challenges/729</a>
win search는 파일을 검색할 때 사용되는데, 빠르게 찾기위해서 윈도우에서 미리 인덱싱을 해 놓는다. 그리고 데이타베이스에 저장한다. 이 데이타베이스를 분석하면 다양한 정보를 얻을 수 있으며, txt파일 같은 경우 내용도 저장되는 경우가 존재한다.
<img src="https://velog.velcdn.com/images/min_fo/post/e9d3185e-d449-461c-9217-551814c03900/image.jpg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[jumplist]]></title>
            <link>https://velog.io/@min_fo/jumplist</link>
            <guid>https://velog.io/@min_fo/jumplist</guid>
            <pubDate>Sun, 13 Aug 2023 08:28:00 GMT</pubDate>
            <description><![CDATA[<h3 id="jumplist">jumplist</h3>
<p>-사용자가 자주 사용하거나 최근에 사용한 문서 또는 프로그램을 관리하는 링크 파일
(미디어 파일은 제외)
-윈도우7 이상 존재하는 아티팩트 
-응용 프로그램별로 그룹화</p>
<p>예시
<img src="https://velog.velcdn.com/images/min_fo/post/cf3b29bf-9ba5-47a9-82c6-2626c23a0e6f/image.jpg" alt="">
위 사진과 같이 최근에 닫은 탭, 자주방문한 페이지등의 정보가 존재한다.</p>
<h3 id="포렌식-관점">포렌식 관점</h3>
<ul>
<li>문서, 프로그램 실행 유무 판단</li>
<li>자주 사용하는 문서, 프로그램 정보 확인</li>
<li>최근에 사용한 문서, 프로그램 정보 확인</li>
</ul>
<h3 id="경로">경로</h3>
<ul>
<li>C:\Users%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestination</li>
</ul>
<ul>
<li>C:\Users%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination</li>
</ul>
<h3 id="automaticdestinations">AutomaticDestinations</h3>
<ul>
<li><p>단어 뜻 그대로 운영체제가 자동으로 남기는 항목</p>
</li>
<li><p>최근 사용한 목록(Resent)나 사용자가 직접 고정시킨 항목(Pinned)가 위치하고 있다.</p>
</li>
<li><p>확장자는 automaticdestinations-ms</p>
</li>
</ul>
<h3 id="customdestinations">CustomDestinations</h3>
<ul>
<li>자주 사용되는 목록(Frequent)나 작업 목록(Tasks)가 존재하고 있다.</li>
<li>확장자는 customdestinations-ms</li>
</ul>
<p>저장되는 파일 이름은 APP id로 아래 링크에서 app id와 app의 이름을 확인가능하다. :<a href="https://github.com/EricZimmerman/JumpList/blob/master/JumpList/Resources/AppIDs.txt">https://github.com/EricZimmerman/JumpList/blob/master/JumpList/Resources/AppIDs.txt</a></p>
<h3 id="실습">실습</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/22e0ac6f-9394-4a96-a120-2bf8cc9a86bb/image.jpg" alt="">
ftk-imager을 통해서 파일들을 복사하였다.
그 후 jumplistexplorer을 통해서 파일들을 확인하였다. 아래 링크에서 파일 다운로드 가능하다.
<a href="https://ericzimmerman.github.io/#!index.md">https://ericzimmerman.github.io/#!index.md</a>
<img src="https://velog.velcdn.com/images/min_fo/post/bc0260ff-2e6a-4b0f-a1cf-d331a514d34d/image.jpg" alt="">
위는 chrome 점프리스트이다. 보면 lnk의 형태가 여러개 존재하고 그중 하나의 정보를 보면, 절대 위치 파일을 연시간, 파일의 정보를 알 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[lnk 파일 분석]]></title>
            <link>https://velog.io/@min_fo/lnk-%ED%8C%8C%EC%9D%BC-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@min_fo/lnk-%ED%8C%8C%EC%9D%BC-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Fri, 11 Aug 2023 09:32:24 GMT</pubDate>
            <description><![CDATA[<h3 id="lnk란">LNK란</h3>
<p>LNK은 바로가기이다. 이러한 바로가기 파일은 윈도우에서 자동으로 만들게 되어있다.(비활성화 가능하다). LNK는 다양한 루트에 만들어진다. 이를 분석하여 파일의 실행으 확인 할 수 있다.</p>
<h4 id="바탕화면-폴더">바탕화면 폴더</h4>
<ul>
<li>Windows XP : C:\Documents and Settings&lt;user name&gt;\Desktop</li>
<li>Windows 7 / 8 / 10 / 11 : C:\Users&lt;user name&gt;\Desktop</li>
</ul>
<h4 id="최근문서recent-폴더">최근문서(Recent) 폴더</h4>
<ul>
<li>Windows XP : C:\Documents and Settings&lt;user name&gt;\Recent</li>
<li>Windows 7 / 8 / 10 / 11 : C:\Users<user name>\AppData\Roaming\Microsoft\Windows\Recent</li>
</ul>
<h4 id="시작프로그램start-폴더">시작프로그램(Start) 폴더</h4>
<ul>
<li>Windows XP : C:\Documents and Settings&lt;user name&gt;\Start Menu\Programs</li>
<li>Windows 7 / 8 / 10 / 11 : C:\Users&lt;user name&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs</li>
</ul>
<h4 id="바탕화면desktop-폴더">바탕화면(Desktop) 폴더</h4>
<ul>
<li>Windows XP : C:\Documents and Settings&lt;user name&gt;\Desktop</li>
<li>Windows 7 / 8 / 10 / 11 : C:\Users&lt;user name&gt;\Desktop</li>
</ul>
<h4 id="빠른실행quicklaunch-폴더">빠른실행(QuickLaunch) 폴더</h4>
<ul>
<li>Windows XP : C:\Documents and Settings&lt;user name&gt;\Application Data\Microsoft\Internet Explorer\Quick Launch</li>
<li>Windows 7 / 8 / 10 / 11 : C:\Users&lt;user name&gt;\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch</li>
</ul>
<p>참고로 빠른실행 및 시작프로그램이 무엇인지 모르면? 아래링크를 읽어보세용</p>
<p>  <a href="https://blog.naver.com/PostView.nhn?blogId=taeil34&amp;logNo=221345931016">https://blog.naver.com/PostView.nhn?blogId=taeil34&amp;logNo=221345931016</a> </p>
<h3 id="실습">실습</h3>
<p>  LEcmd을 통해서 recent의 hmtl 분석파일을 만들었다.</p>
<p>  <img src="https://velog.velcdn.com/images/min_fo/post/c3499270-6169-4f50-9efc-e13538729db4/image.jpg" alt="">
  아래 사진은 lnk의 html이다.
<img src="https://velog.velcdn.com/images/min_fo/post/d210c9cf-932d-4456-bc66-50db7d602fc4/image.jpg" alt=""></p>
<h3 id="추가적인-분석">추가적인 분석</h3>
<p>  usb을 통해서 불법적인 avi 파일을 유통하는 것을 잡을 때 사용될 수 있다. 아래 링크 참고</p>
<p>  <a href="http://forensic-proof.com/archives/607">http://forensic-proof.com/archives/607</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[$MFT, $usnjrnl, $logfile]]></title>
            <link>https://velog.io/@min_fo/MFT-usnjrnl-logfile</link>
            <guid>https://velog.io/@min_fo/MFT-usnjrnl-logfile</guid>
            <pubDate>Fri, 11 Aug 2023 08:29:49 GMT</pubDate>
            <description><![CDATA[<p>$usnjrnl 및 $ logFile 모두 mft entry이다. 둘이 비슷한점은 파일들을 기록한다는 점이다. logfile의 경우 블루스크린 같은 문제점이 발생하였을 때 복구하기 위해서 로그를 기록한다. usnjrnl의 경우 그저 파일의 변화를 기록하기 위해서 존재한다. 목적이 다르다. </p>
<h3 id="실습">실습</h3>
<p>ntfs tracker 통해서 분석한 것이다.
<img src="https://velog.velcdn.com/images/min_fo/post/ea500d40-6424-44b9-ab6a-0836f10f46f1/image.jpg" alt=""></p>
<p>악성코드를 분석할 때, suspcious behavior을 통해서 시간을 확인하고 시간 관계를 통해서 파일을 흐름을 분석했다.</p>
<p>추가적인 분석을 위해서 db을 추출한뒤, sqlite을 통해서 분석하였다.</p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/f71c7537-74ee-4dfd-98b4-d2203e4d7265/image.jpg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[$MFT 분석]]></title>
            <link>https://velog.io/@min_fo/MFT-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@min_fo/MFT-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Fri, 11 Aug 2023 08:23:11 GMT</pubDate>
            <description><![CDATA[<h3 id="mft란">$MFT란</h3>
<p>NTFS의 구조는 MBR(gpt)-VBR-MFT-file 순으로 되어있다,
여기서 MFT는 MFT ENTRY로 이루어져 있다. MFT ENTRY중 하나가 $MFT이다. $MFT는 MFT의 정보를 가지고 있다. 즉 파일들의 정보를 가지고 있다. 참고로 파일 하나당 MFT ENRTY가 하나이상 만들어진다.</p>
<h4 id="추가적으로-mft-entry는-heaeder---fixuparrary--속성-헤더헤더가-두개로-나뉨---속성-정보---endmarker---사용하지-않는-공간으로-되어있다">추가적으로 MFT ENTRY는 HEAEDER - fixuparrary- 속성 헤더(헤더가 두개로 나뉨) - 속성 정보 - endmarker - 사용하지 않는 공간으로 되어있다.</h4>
<h3 id="실습">실습</h3>
<p>$MFT는 ftk imager로 열면 root아래에 존재한다. 이를 MFTExplorer로 분석해보았다.</p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/abcc8e5a-e683-49d5-be25-5c12b1a92c7a/image.jpg" alt=""></p>
<p>알수 있는 정보: 속성 헤더 관련된 정보, 파일 구조, 파일 종류, 파일 시간 등 </p>
<p>다운로드 경로: <a href="https://ericzimmerman.github.io/#!index.md">https://ericzimmerman.github.io/#!index.md</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[레지스터 포렌식]]></title>
            <link>https://velog.io/@min_fo/%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0-%ED%8F%AC%EB%A0%8C%EC%8B%9D</link>
            <guid>https://velog.io/@min_fo/%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0-%ED%8F%AC%EB%A0%8C%EC%8B%9D</guid>
            <pubDate>Wed, 09 Aug 2023 14:49:28 GMT</pubDate>
            <description><![CDATA[<h3 id="레지스터">레지스터</h3>
<p>레지스터는 운영체제와 응용프로그램 운영에 필요한 정보를 저장한 계층형 데이터베이스이다. </p>
<ul>
<li>시스템 정보(systeminfo)</li>
<li>오토런(autorun)</li>
<li>로그인 시간정보</li>
<li>환경변수 설정정보</li>
<li>응용프로그램</li>
<li>저장, 열기 기능을 사용한 프로그램</li>
<li>저장 열기된 프로그램</li>
<li>usb 흔적</li>
<li>마운트 된 기기들</li>
<li>shellbags(사용자가 접근한 폴더 정보)</li>
</ul>
<p>위와 같은 다양한 정보를 얻을 수 있다. 이에 대해서 추가적인 정보는 다음 아래의 사이트에서 확인할 수 있다.</p>
<p><a href="http://www.forensic-artifact.com/registry-forensics/main">http://www.forensic-artifact.com/registry-forensics/main</a> </p>
<h3 id="실습1rega">실습1(rega)</h3>
<p>레가 다운로드: <a href="http://forensic.korea.ac.kr/tools.html">http://forensic.korea.ac.kr/tools.html</a></p>
<p>위에 링크를 읽어보면 알수 있다. 루트 키는 하이브 파일, 혹은 메모리에 휘발성으로 저장된다. 이중 하이브파일을 분석하여 위에서 언급한 다양한 정보를 파악할 수 있다.</p>
<p>아래는 레가를 통해서 수집한 하이브이다.</p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/7276083a-21f3-41b4-b82e-447165d63c6f/image.jpg" alt=""></p>
<p>아래와 같은 정보를 확인할 수 있다.
<img src="https://velog.velcdn.com/images/min_fo/post/a9a9c3b7-b33a-4dc2-a551-6bde0a4221a4/image.jpg" alt=""></p>
<p>REGA의 장점</p>
<ol>
<li>보기 좋은 UI</li>
</ol>
<p>REGA의 문제점</p>
<ol>
<li>log 파일들을 완벽히 구해내지 못한다. 하이브는 로그파일을 만든다. 거기에 존재하는 정보를 놓칠 수 있다.</li>
<li>또한 지원하지 않는 기능이 존재한다.</li>
</ol>
<h3 id="실습2">실습2</h3>
<p>rla 다운로드 : <a href="https://ericzimmerman.github.io/#!index.md">https://ericzimmerman.github.io/#!index.md</a></p>
<p>ftk imager 통해서 필요한 파일들을 추출했다
sam, security, system과 같은 파일들은 windows/system32/config에 존재하였고
ntuser의 경우 user/사용자/ 에 존재하였다. 
<img src="https://velog.velcdn.com/images/min_fo/post/7ec293e9-0d51-4e2d-a88a-6e446ff6a959/image.jpg" alt=""></p>
<p>보면 알다싶이 하이브이외의 로그파일에도 산발적으로 분포한 기록을 rla을 통해서 통합해준다</p>
<p>이후 regripper을 통해서 하이브를 분석합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[침해사고대응 절차(윈도우)]]></title>
            <link>https://velog.io/@min_fo/%EC%B9%A8%ED%95%B4%EC%82%AC%EA%B3%A0%EB%8C%80%EC%9D%91-%EC%A0%88%EC%B0%A8%EC%9C%88%EB%8F%84%EC%9A%B0</link>
            <guid>https://velog.io/@min_fo/%EC%B9%A8%ED%95%B4%EC%82%AC%EA%B3%A0%EB%8C%80%EC%9D%91-%EC%A0%88%EC%B0%A8%EC%9C%88%EB%8F%84%EC%9A%B0</guid>
            <pubDate>Sun, 06 Aug 2023 09:22:51 GMT</pubDate>
            <description><![CDATA[<p> 네트워크를 차단하거나 전원을 차단했을 때 소멸되는 공격 흔적 또는 쉽게 변화되거나 삭제되는 휘발성 정보를 수집하기 위하여 초기 분석을신속히 수행하여야 한다. 또한 효과적인 대응을 위해서 구체적인 절차를 알고 있어야 하기에 이에 대해서 설명해보고자 한다.</p>
<p>kisa에서 발표한 침해사고대응을 기준으로 보면 절차는 간략하게 다음과 같다.</p>
<p>기초 정보 수집 -&gt; 프로세스 정보 분석 -&gt; 네트워크 정보 분석 -&gt; 레지스트리 분석 -&gt; 로그 기록확인 -&gt; rootkit 분석 -&gt; 원인 분석을 위해 악성코드 동작 분석을 통해 원래 상태 복구 필요한 도구 설명</p>
<p>kisa의 경우 os에서 자체적으로 주는 기능 혹은 sysinternal을 사용하였다. 하지만 덤프를 통한 백업 혹은 로그들이 삭제되어 있을 경우 이를 복구하는 방식은 가르쳐주지 않았다. </p>
<p>그럼에도 좋은 내용이니 확인 해보실 바람 . : <a href="https://www.kisa.or.kr/2060204/form?postSeq=11&amp;page=1">https://www.kisa.or.kr/2060204/form?postSeq=11&amp;page=1</a></p>
<h3 id="디스크-메모리백업-및-분석의-목적">디스크 메모리(백업 및 분석의 목적)</h3>
<p>초기분석의 목적은 사고 인지 시점에서 피해시스템의 상태를 변경시키지
않고 원인 규명에 필요한 모든 침입 흔적을 찾아보는 것이다.</p>
<p>우선 침해사고가 발생한 시스템의 디스크 이미지를 복사할 수 있는 프로
그램을 활용하여 디스크 이미지를 생성한다.</p>
<ul>
<li>사용하는 툴 dd, ftk imager</li>
<li>dd의 경우 비트바이 비트로 하드디스크를 복사할 수 있기 때문에 숨겨진 파일등 다양한 파일들을 복사할 수 있다. 또한 삭제할 수 없는 파일또한 삭제할 수 있다. </li>
<li>참고로 DD 사용전 포렌식에서 주용한 무결성 보호를 위해서 레지스터를 편집하여 보호한다. </li>
</ul>
<h3 id="휘발성-메모리">휘발성 메모리</h3>
<p>fmem, lieme 등의 프로그램을 사용하여 덤프한다. 휘발성 메모리에는 다양한 정보들이 들어있기에 추후 침해대응에 많은 도움을 준다.</p>
<h3 id="시스템-기본-정보-수집">시스템 기본 정보 수집</h3>
<ul>
<li><p>psinfo 시스템 기본정보를 보여준는 프로글매이다.
(-h: 설치된 핫픽스 정보, -s 설치된 S/W 목록정보, -d 디스크 볼륨정보)</p>
</li>
<li><p>핫픽스(hotfix 또는 quick-fix engineering update) 또는 QFE 업데이트(QFE update)는 제품 사용 중에 발생하는 버그의 수정이나 취약점 보완, 또는 성능 향상을 위해 긴급히 배포되는 패치 프로그램을 말한다</p>
</li>
<li><p>date 분석 당시 시스템 날짜오 시간을 기록한다.(윈도우 내부 명령)</p>
</li>
<li><p>uptime 프로그램의 부팅시간정보 확인
(/s 시스템 로그를 분석하여 재부팅 횟수, 블루스크린 횟수등의 통계정보를 보여줌)</p>
</li>
</ul>
<h3 id="네트워크-정보-수집">네트워크 정보 수집</h3>
<ul>
<li>ipconfig(윈도우 내부 명령어) : 시스템에 구성된 전체 IP주소, 서브넷 마스크, 기본게이트웨이를 확인하고 추가적으로 IP Routing 옵션이 enable로 되어 있는지, 새로운 IP주소가 추가되어 있는지, 초기 설정에 변경된 사항이 있는지 점검한다.
(/all:시스템에 설치된 모든 네트워크 인터페이스정보 출력해준다) </li>
<li>net sess(윈도우 내부 명령어) :로컬 컴퓨터의 공유자원에 접속한 클라이언트의 세
션 정보를 수집한다. 현재 공유자원에 접속한 컴퓨터이름, 사용자이름, 클라이언트 유형, 접속 수, 접속 유지 시간 등을 알 수 있다.</li>
<li>nbtstat -c(윈도우 내부 명령어): TCP/IP의 NetBIOS 이름 테이블 정보를 수집
한다.</li>
<li>arp -a(윈도우 내부 명령어): IP주소와 매칭되는 네트워크 인터페이스 하드웨어
주소 정보를 수집한다.</li>
<li>route(윈도우 내부 명령어) : 로컬 컴퓨터에 설정된 라우팅 테이블 정보를 보여
준다</li>
<li>net share(윈도우 내부 명령어) : 로컬 컴퓨터의 모든 네트워크 공유자원에 대한 정보를 보여준다</li>
<li>netstat -na(윈도우 내부 명령어) : 로컬 컴퓨터의 TCP/IP 연결 상태와 프로토콜 통계 정보를 보여준다. 로컬 컴퓨터에 현재 활성화된 네트워크 연결정보 및 연결을 막 끝낸정보, 사용되는 포트 정보를 수집한다.</li>
<li>tcpview : 로컬 컴퓨터의 TCP/IP 연결 상태와 해당 프로세
스명을 실시간으로 보여준다<h3 id="포트별-서비스-정보-수집">포트별 서비스 정보 수집</h3>
</li>
<li>fport 어떠한 응용 프로그램이 어떤 포트를 사용하는지에
대한 정보를 보여준다.
/p :포트별 정렬 /a :응용프로그램 이름순 정렬
/I :프로세스 ID 정렬 /ap :응용 프로그램 디렉토리 순 정렬</li>
</ul>
<p>아래는 포트확인 사이트이다.
<a href="http://www.iana.org/assignments/port-numbers">http://www.iana.org/assignments/port-numbers</a>
<a href="http://www.portsdb.org">http://www.portsdb.org</a>
<a href="http://www.insecure.org/nmap/">http://www.insecure.org/nmap/</a>
<a href="http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&amp;subcontent=/">http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&amp;subcontent=/</a>
resources/proddesc/superscan.htm</p>
<h3 id="스니퍼-실행-확인">스니퍼 실행 확인</h3>
<ul>
<li>promiscdetect:네트워크 인터페이스 카드의 promiscuous
모드 동작 유무를 알려준다.</li>
</ul>
<h3 id="사용자그룹-정보-수집">사용자/그룹 정보 수집</h3>
<ul>
<li>net user(윈도우 내부 명령어) 로컬 컴퓨터의 사용자 정보를 보여준다.</li>
<li>net localgroup(윈도우 내부 명령어) 로컬 컴퓨터의 그룹 정보를 보여준다.</li>
</ul>
<h3 id="로그인-정보-수집">로그인 정보 수집</h3>
<ul>
<li>psloggedon 로컬 컴퓨터 및 원격 컴퓨터의 로그인 정보 점검 도구이다.</li>
<li>net 동작중인 서비싀 목록을 보여준다.</li>
</ul>
<h3 id="레지스터리-분석">레지스터리 분석</h3>
<ul>
<li>대부분의 악성 프로그램은 시스템이 재부팅 되더라도 다시 실행될 수 있
도록 설정된다.</li>
<li>윈도우 시작 프로그램에 등록된 프로그램을 점검한다.</li>
<li>윈도우 설정파일 win.ini, system.ini 파일에 등록되어 있는 프로그램
을 점검한다.</li>
<li>레지스트리에 등록되어 있는 프로그램을 점검한다<h3 id="로그-기록-분석">로그 기록 분석</h3>
</li>
<li>로그 기록을 분석한다</li>
<li>만약 로그 기록이 없을 경우 해커가 삭제한 것이다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[볼라틸리티 GUI 버전]]></title>
            <link>https://velog.io/@min_fo/%EB%B3%BC%EB%9D%BC%ED%8B%B8%EB%A6%AC%ED%8B%B0-GUI-%EB%B2%84%EC%A0%84</link>
            <guid>https://velog.io/@min_fo/%EB%B3%BC%EB%9D%BC%ED%8B%B8%EB%A6%AC%ED%8B%B0-GUI-%EB%B2%84%EC%A0%84</guid>
            <pubDate>Sun, 06 Aug 2023 07:43:35 GMT</pubDate>
            <description><![CDATA[<p>볼라틸리티 GUI 버전을 소개하고자 한다. 일반적으로 볼라틸리티는 GUI 버전이 아니다. 다양한 명령들이 존재하는데 이를 help 명령을 통해서 알아가며 분석해야 된다. 
하지만 GUI의 경우 그럴 필요가 없다.</p>
<h3 id="1-볼라틸리티-워크벤치-다운로드">1 .볼라틸리티 워크벤치 다운로드</h3>
<p>아래의 링크를 가면 <a href="https://www.osforensics.com/downloads/VolatilityWorkbench.zip">다운로드</a> 할 수 있다.</p>
<p>링크: <a href="https://www.osforensics.com/tools/volatility-workbench.html">https://www.osforensics.com/tools/volatility-workbench.html</a>
다운로드 링크 : <a href="https://www.osforensics.com/downloads/VolatilityWorkbench.zip">https://www.osforensics.com/downloads/VolatilityWorkbench.zip</a></p>
<h3 id="2--cridex-분석">2 . Cridex 분석</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/138ef89e-b0c8-487c-897a-dfbc47b08585/image.jpg" alt=""></p>
<p>pstree를 보고 아래와 같은 이상 파일이 있음을 확인했다. 이전에 쓴 글을 참고하여 분석해보았다.</p>
<h3 id="3-워크-벤치-단점">3. 워크 벤치 단점</h3>
<p>일단 txt파일로 로그를 저장하는데 내용만 저장할 수 없다. 또한 GUI상태로 보기는 불편하다. GUI이기 때문에 속도가 느리다는 단점이 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[침해사고대응]]></title>
            <link>https://velog.io/@min_fo/%EC%B9%A8%ED%95%B4%EC%82%AC%EA%B3%A0%EB%8C%80%EC%9D%91</link>
            <guid>https://velog.io/@min_fo/%EC%B9%A8%ED%95%B4%EC%82%AC%EA%B3%A0%EB%8C%80%EC%9D%91</guid>
            <pubDate>Sat, 29 Jul 2023 16:40:14 GMT</pubDate>
            <description><![CDATA[<p>cridex라는 악성코드를 메모리 포렌식을 통해서 분석하는 과정이다. </p>
<p>메모리 분석시 사용한 도구는 volatility 이다</p>
<p>기본적인 명령 구조는 vol~ -f 파일명 명령이다.</p>
<h3 id="1-volatility--사용법">1. volatility  사용법</h3>
<h4 id="운영체제-식별">운영체제 식별</h4>
<ul>
<li>imageinfo : 메모리덤프의 운영체제 식별</li>
<li>*
volatility -f &lt;이미지 파일&gt; <em>_imageinfo</em>**</li>
</ul>
<h4 id="프로세스-검색">프로세스 검색</h4>
<ul>
<li><p>pslist : 프로세스 리스트를 시간 순서대로 보여줌</p>
</li>
<li><p>psscan : 프로세스 구조체 스캔 후 출력, 숨겨진 프로세스 출력 가능</p>
</li>
<li><p>pstree : pid, ppid 기준으로 구조화하여 보여줌,</p>
</li>
</ul>
<p>최초로 생성되는 프로세스를 제외하고, 모든 프로세스는 부모 프로세스를 복제해 생성되고 계 층관계 트리가 생긴다. 각각의 프로세스는 자식 프로세스와 부모 프로세스에 대한 정보를 가진다. PID(Process ID)는 운영체제에서 프로세스를 구분하기 위해 부여한 번호이다. PPID(Parent Process ID)는 해당 프로세스를 만든 부모 프로세스의 PID를 의미한다.</p>
<ul>
<li>psxview : pslist, psscan을 포함한 도구들의 결과를 한 눈에 볼 수 있음,</li>
</ul>
<p>pslist는 true인데 psscan 은 false인 경우 숨겨진 프로세스라고 의심 가능하다.</p>
<p> <strong><em>Volatility -f &lt;이미지파일&gt; --profile</em></strong></p>
<p>=Suggested Profile <strong>pslist / psscan / pstree / psxview</strong> &gt; <strong>pslist / psscan / pstree / psxview</strong>.log</p>
<h4 id="네트워크-분석">네트워크 분석</h4>
<ul>
<li><p>connections : 현재 연결된 tcp 통신에 대한 정보</p>
</li>
<li><p>connscan : 풀 태그 스캐닝 방식을 사용해 연결을 파악하고 종료된 연결까지 파악 가능</p>
</li>
<li><p>netscan : 메모리의 네트워크 정보, 프로세스 정보 출력</p>
</li>
<li><p>sockets : tcp, udp를 포함한 모든 프로토콜 출력, 현재 listening 상태에 있는 소켓 출력</p>
</li>
</ul>
<p><strong>_ volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; connections &gt; connections.log_</strong></p>
<p> <strong><em>volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; connscan</em></strong></p>
<h4 id="cmd분석">cmd분석</h4>
<ul>
<li><p>cmdscan, consoles : 콘솔에 입력한 값들을 볼 수 있음. cmdscan은 cmd.exe가 실행한 명령을 나열하고 consoles는 명령이 성공했는지 안 했는지 알 수 있음</p>
</li>
<li><p>cmdline : 프로세스가 실행될 때의 인자 값을 확인할 수 있음</p>
</li>
</ul>
<p><strong><em>volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; cmdscan &gt; cmdscan.log</em></strong></p>
<p> <strong><em>volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; consoles &gt; consoles.log</em></strong></p>
<p> <strong>_ volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; cmdline &gt; cmdlines.log_</strong></p>
<h4 id="파일-분석-및-덤프">파일 분석 및 덤프</h4>
<ul>
<li><p>filescan : 메모리 내에 존재하는 모든 파일들의 리스트 출력</p>
</li>
<li><p>dumpfiles : 파일을 덤프, 옵션으로 메모리 주소, 프로세스 줄 수 있음</p>
</li>
<li><p>virtustotal 사이트는 바이러스 검사를 할 수 있는 사이트이다.</p>
</li>
</ul>
<p>__ volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; filescan &gt; filescan.log
__</p>
<p> <strong>volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; dumpfiles -Q &lt;메모리주소&gt; -D &lt;저장 할 디렉토리&gt;</strong></p>
<h4 id="프로세스-세부-분석">프로세스 세부 분석</h4>
<ul>
<li>procdump : 프로세스의 실행 파일을 추출</li>
</ul>
<p><strong>volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; memdump -p pid -D &lt;저장할 디렉토리&gt;
__
__volatility -f &lt;이미지 파일&gt; --profile=&lt;프로파일 명&gt; procdump -p pid -D &lt;저장할 디렉토리&gt;</strong></p>
<h3 id="2-분석-시작">2. 분석 시작</h3>
<h4 id="1-이미지-정보-분석">1. 이미지 정보 분석</h4>
<p><img src="https://velog.velcdn.com/images/min_fo/post/4b9b032f-efc0-4c36-8235-0ad3fd189000/image.jpg" alt=""></p>
<h4 id="2-필요한-파일을-정보-추출">2. 필요한 파일을 정보 추출</h4>
<p><img src="https://velog.velcdn.com/images/min_fo/post/87d6132e-d6bb-4274-9f5f-4f72cffb5333/image.jpg" alt=""></p>
<h4 id="3-악성코드-판별">3. 악성코드 판별</h4>
<p><img src="https://velog.velcdn.com/images/min_fo/post/01020cb4-c3e8-4ffe-98cd-9d89af65dea8/image.jpg" alt=""></p>
<p>explorer.exe가 바이러스입니까? 전혀 그렇지 않다. 진정한 explorer.exe 파일은 &quot;Windows 탐색기&quot;라고하는 안전한 Microsoft Windows 시스템 프로세스입니다. 그러나 바이러스, 웜 및 트로이 목마와 같은 맬웨어 프로그램 작성자는 프로세스에서 탐지를 피하기 위해 동일한 파일 이름을 사용합니다</p>
<p>Reader_sl.exe는 PDF로 작성, 보기, 수정 및 인쇄하기 위해 Adobe에서 만든 소프트웨어 및 웹 서비스 인 Adobe Acrobat에 속한 실행 파일입니다.
<img src="https://velog.velcdn.com/images/min_fo/post/a85709fe-32c9-4274-a5ca-e5c3a28c78ea/image.jpg" alt="">
위 사진을 보면 알 수 있다 싶이 숨겨진 파일은 없다
<img src="https://velog.velcdn.com/images/min_fo/post/3926bb1c-0877-4e03-b85a-6a9019e3ab34/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/min_fo/post/8566edd2-ae83-40f6-8cdd-9b45f0f0cc6d/image.jpg" alt="">
cmdline을 살펴보면 경로도 살펴보았다. 두 파일 모두 원래 있어야 하는 경로에 있다. 무슨뜻이냐면, explorer.exe는 
 이는 windows 경로 밑에 있어야 한다. </p>
<p>하지만 위 두파일이 가장 의심되는 파일이기 때문에 procdump 및 dumpfile을 통해서 파일을 추출하고 바이러스토탈에 돌려보았다. 결과는 아래와 같다. 
<img src="https://velog.velcdn.com/images/min_fo/post/954525e8-c348-49f6-9789-7be8135ffd48/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/min_fo/post/ecb820c2-d2ee-4a56-a9a9-4753385ac234/image.jpg" alt=""></p>
<p>악성코드로 의심할 수  있는 수준이다.</p>
<h4 id="4-악성코드-작동-방식">4. 악성코드 작동 방식</h4>
<p><img src="https://velog.velcdn.com/images/min_fo/post/16239241-2f5d-4410-ad95-2e3c437afaf1/image.jpg" alt="">
connections의 결과이다. pid 1484 즉 explorer.exe는 41.168.5.140을 통해서 통신을 하고 있다. 더 세부적인 분석을 하기 위해서 memdump을 통해서 string 분석을 할 것이다. </p>
<h4 id="4-1-explorerexe-memdump-결과">4-1 explorer.exe memdump 결과</h4>
<p><img src="https://velog.velcdn.com/images/min_fo/post/235e18cb-7900-43f1-943e-cfdb09caf29f/image.jpg" alt="">
위와 같은 41.168.5.140:8080/zb/v_01_a/in/ 과 같은 웹사이트 주소를 발견했다. 아마도 웹 사이트를 통해서 explorer.exe는 통신하는 것이 아닐까 싶다.
<img src="https://velog.velcdn.com/images/min_fo/post/5fa542eb-cede-4f82-af09-127a9a7ddeab/image.jpg" alt="">
이후 다양한 은행 관련 주소를 찾았다. 아마도 은행 관련 피싱 악성코드로 의심된다.
<img src="https://velog.velcdn.com/images/min_fo/post/2656c7a0-ea32-40e7-8f26-61292cc0323c/image.jpg" alt="">
어도비 관련된 api을 찾았다. 이는 브라우저에 추가 기능 해주는 것이다.
<img src="https://velog.velcdn.com/images/min_fo/post/900d1b5e-eb3e-4378-a201-53aed0222873/image.jpg" alt="">
메일 관련된 다양한 함수를 찾았다. 아마도 감염된 컴퓨터를 통해서 추가적인 악성코드를 퍼트릴려고 하는 것 갔다.</p>
<h4 id="4-2-reader_sl">4-2 reader_sl</h4>
<p><img src="https://velog.velcdn.com/images/min_fo/post/6a9652ec-dcae-4f60-9869-f22c6ca7eaec/image.jpg" alt="">
41.168.5.140과 통신하는지 확인하고 연결되어 있다면 프로그램이 작동하는 것 갔다.
<img src="https://velog.velcdn.com/images/min_fo/post/d5a5df36-7c6e-43d8-ad9a-a000d8a6ab13/image.jpg" alt="">
메일을 보내는 함수를 찾은 것 갔다.</p>
<h3 id="3-결론">3. 결론</h3>
<p>악성코드가 어떤것인지 의심되는 부분을 추출을 성공했지만, 구체적으로 어떤방식으로 악성코드가 작동되는지 파악하는 것에는 한계점이 있다. 그렇기에 악성코드를 추출하고 정적 동적 분석을 실해야한다. </p>
<p>추가적으로 악성코드가 이메일을 통해서 침투되었다고 의심은 할 수 있지만 실질적으로 어떻게 침투되었는지는 메모리 포렌식만을 통해서 알아내기는 힘들 것 같다.</p>
<p>이러한 침해사고대응을 잘 대응하기 위해서는 포렌식 기술 뿐만아니라 다양한 정보보안 지식이 있어야 할 것 같다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[NTFS 삭제 파일 복구 실습]]></title>
            <link>https://velog.io/@min_fo/NTFS-CTF-%ED%92%80%EA%B8%B0</link>
            <guid>https://velog.io/@min_fo/NTFS-CTF-%ED%92%80%EA%B8%B0</guid>
            <pubDate>Fri, 28 Jul 2023 06:23:02 GMT</pubDate>
            <description><![CDATA[<ol>
<li><p>vbr
<img src="https://velog.velcdn.com/images/min_fo/post/232d82dc-945e-4299-b747-80f30034f925/image.jpg" alt="">
vbr의 클러스트당 섹터는 8개, 섹터의 바이트는 16진수로 200이다. 또한 $mft의 시작위치는 0xa6aa(클러스터 갯수)이다. 종합적으로 mft는 200 x 08 x a6aa = 0xa6aa000에 위치한다.
아래 사진 처럼 $mft가 존재하는 것을 $name 속성을 보고 알 수 있다.
<img src="https://velog.velcdn.com/images/min_fo/post/c6792de9-5510-40cb-be40-721da0056efa/image.jpg" alt=""></p>
</li>
<li><p>파일 찾기
삭제 파일 위치는 43번 째이다. 즉 $mft의 entry는 0번이고 entry 당 2개의 섹터를 사용하기 때문에 43 x 2 x 200 을 더 이동하면 삭제 연습 파일 entry에 도달한다. 
<img src="https://velog.velcdn.com/images/min_fo/post/9db52d9a-9767-4fcf-9c49-ebb3a81670a9/image.jpg" alt=""></p>
</li>
<li><p>도달. 
다음은 mft entry의 헤더이고 이 다음 0x0038의 위치에 속성들이 나오기 시작한다. 
<img src="https://velog.velcdn.com/images/min_fo/post/bbcc76e0-8523-4e73-bec3-2727836a51d1/image.jpg" alt=""></p>
</li>
<li><p>name의 속성
다음은 name의 속성이다.
<img src="https://velog.velcdn.com/images/min_fo/post/f2efe71e-cc0e-4aee-924a-43784eaf0a7e/image.jpg" alt="">
아래 사진은 16진수로 되어 있는 이름이다.
<img src="https://velog.velcdn.com/images/min_fo/post/2e19586e-2ebb-4ef0-a15a-2a0fa5ba6118/image.jpg" alt="">
이를 utf-16으로 변경하면 한국어로 변경된 이름을 찾을 수 있다.
<img src="https://velog.velcdn.com/images/min_fo/post/d30565b1-cfda-4357-88f8-1070ed1e7341/image.jpg" alt=""></p>
</li>
<li><p>파일 삭제하고 변화 보기(trim 정지)
trim을 멈추는 방법은 cmd - &gt; fsutil 8dot3name set disabledeletenotify 1
<img src="https://velog.velcdn.com/images/min_fo/post/358bc5d2-8263-4959-9c56-62d6f6742cb0/image.jpg" alt=""></p>
</li>
</ol>
<p>아래 이름이 영역이 특히하게 변경되었다. 하지만 데이터 부분은 그대로 존재하는 것을 확인할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[NTFS 구조 ]]></title>
            <link>https://velog.io/@min_fo/NTFS-%EC%82%AD%EC%A0%9C%EB%90%9C-%ED%8C%8C%EC%9D%BC-%EC%8B%A4%EC%8A%B5</link>
            <guid>https://velog.io/@min_fo/NTFS-%EC%82%AD%EC%A0%9C%EB%90%9C-%ED%8C%8C%EC%9D%BC-%EC%8B%A4%EC%8A%B5</guid>
            <pubDate>Fri, 28 Jul 2023 06:22:42 GMT</pubDate>
            <description><![CDATA[<h3 id="vbr-구조">VBR 구조</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/f8a32915-fb8d-4fcb-a27d-fc5a6a8f8c56/image.jpg" alt="">
위 사진은 VBR에서 중점적인 부트섹터 구조이다</p>
<h3 id="mft-entry-0번부터-16번">MFT ENTRY 0번부터 16번</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/51bcdac3-d310-40e4-9bbe-b60e7ffb9b4b/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/min_fo/post/89417b0f-ac7c-45d2-a7be-602964885756/image.jpg" alt=""></p>
<h3 id="mft-entry-헤더">MFT ENTRY 헤더</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/3c8125fa-15a7-4a10-9b60-e6eb3461bcd1/image.jpg" alt=""></p>
<h3 id="mft-entry-속성-공통-헤더">MFT ENTRY 속성 공통 헤더</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/a6923f0a-fd17-4d49-99a1-fb42e4d3b749/image.jpg" alt=""></p>
<h3 id="resident-헤더">resident 헤더</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/a6f8932f-b5de-41dd-862d-01ca5fdafbcb/image.jpg" alt=""></p>
<h3 id="non-resident-헤더">Non-resident 헤더</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/b1634639-0f75-45c6-814a-9406dff0e936/image.jpg" alt=""></p>
<h3 id="stand-info-구조">stand-info 구조</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/ab9e1582-74d0-4bc0-a297-16bfeaf98fd8/image.jpg" alt=""></p>
<h3 id="name">Name</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/3a2d8941-21cc-4eb5-9aa8-88806e9d2e42/image.jpg" alt=""></p>
<h3 id="data">Data</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/c5d91467-c3dd-4b54-b6de-124e36a4b9ae/image.jpg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[NTFS 설명]]></title>
            <link>https://velog.io/@min_fo/NTFS-%EC%84%A4%EB%AA%85-uvzkm74x</link>
            <guid>https://velog.io/@min_fo/NTFS-%EC%84%A4%EB%AA%85-uvzkm74x</guid>
            <pubDate>Fri, 28 Jul 2023 06:22:19 GMT</pubDate>
            <description><![CDATA[<p>참고 및 인용 사이트 : <a href="http://forensic-proof.com/page/2?s=ntfs">http://forensic-proof.com/page/2?s=ntfs</a>
Windows NT가 개발되면서 FAT의 구조상의 한계점을 개선하기 위한 새로운 파일시스템인 NTFS가 함께 개발되었다</p>
<p>이러한 NTFS는 아래와 같은 특징이 있다.</p>
<h3 id="ntfs-특징">NTFS 특징</h3>
<h4 id="1-usn-저널-update-sequence-number-journal-또는-change-journal">1) USN 저널 (Update Sequence Number Journal 또는 Change Journal)</h4>
<h4 id="2-ads-alternate-data-stream">2) ADS (Alternate Data Stream)</h4>
<h4 id="3-sparse-특징">3) Sparse 특징</h4>
<h4 id="4-파일-압축">4) 파일 압축</h4>
<h4 id="5-vss-volume-shadow-copy-service">5) VSS (Volume Shadow Copy Service)</h4>
<h4 id="6-efs-encrypting-file-system">6) EFS (Encrypting File System)</h4>
<p>EFS는 NTFS 상에서 파일 및 디렉터리를 암호화 하는 기능으로 CryptoAPI와 EFS File System Run-Time Library(ESRTL)를 사용한 대칭키 방식으로 암호화 한다. 앞선 그림에서와 같이 각 파일 및 디렉터리의 고급 항목을 통해 암호화를 사용할 수 있다.</p>
<h4 id="7-quotas">7) Quotas</h4>
<p>Windows 서버형 제품군은 다중사용자를 위한 시스템이다. 다중 사용자를 지원할 경우 각 사용자의 디스크 사용량을 제한하기 위해 쿼터(Quotas) 기능을 사용한다. 만약, 쿼터 기능이 설정된 시스템에서 자신에게 할당된 공간 이상으로 사용하고자 할 경우 경고메시지를 받게 된다.</p>
<h4 id="8-유니코드-지원">8) 유니코드 지원</h4>
<p>NTFS는 파일, 디렉터리, 볼륨 등의 이름을 지정할 때 모두 유니코드를 사용해 처리한다.</p>
<h4 id="9-동적-배드-클러스터-재할당">9) 동적 배드 클러스터 재할당</h4>
<p>배드 섹터가 발생한 클러스터는 사용할 수 없다. 배드 섹터가 발생한 클러스터는 $BadClus 파일에 추가되어 더이상 사용되지 않도록 관리된다.</p>
<p>이러한 특징은 추후 MFT의 속성에 나타난다.</p>
<h3 id="ntfs-구조">NTFS 구조</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/ae599a61-b5a6-40c9-b1d9-0c33ccc2b49d/image.png" alt=""></p>
<ul>
<li>mft는 mft entry로 이루어짐</li>
<li>mft는 고정적인게 아님</li>
<li>mft는 물리적으로  연결 x</li>
<li>vbr뒤에 mft가 바로 나오지 않음</li>
</ul>
<p>MFT 영역의 마지막이 점선으로 표시된 점은 MFT 영역의 크기는 미리 예측할 수 없기 때문에 항상 고정적으로 VBR 다음에 오는 것이 아니라 볼륨에 파일 및 디렉터리가 많아 질수록 데이터 영역에 조각나 저장될 수 있다. 따라서 초기 포맷 시에는 일정 영역만 MFT를 위한 영역으로 할당된다. 추가적으로 VBR 뒤에 물리적으로 MFT가 붙어나오는 것은 아니다.</p>
<h3 id="vbr">VBR</h3>
<p>VBR(Volume Boot Record)는 NTFS 구조에서 가장 앞부분에 위치하는 영역이다. VBR의 크기는 고정된 크기를 가지지 않고 다음과 같이 클러스터 크기에 의존한다. </p>
<h4 id="부트섹터">부트섹터</h4>
<p>VBR의 첫 번째 섹터는 부트 코드를 포함한 부트 섹터가 위치한다. 나머지 섹터들은 추가적인 부트 코드를 저장하기 위한 용도로 사용되거나 NTLDR(NT Loader)을 빠르게 로드하기 위해 NTLDR의 위치를 저장하기 위한 용도로 사용된다.</p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/bb95f039-3817-4c2b-9105-28cab20aac25/image.png" alt=""></p>
<p>MBR에서 부팅 가능한 파티션(볼륨)을 찾으면 해당 볼륨의 첫 섹터(부트섹터)를 메모리에 로드한 후 실행한다. 위 부트섹터 그림에서 첫 3바이트는 “EB 52 90″으로 되어 있는데 이 내용을 해석하면 다음과 같다.</p>
<ul>
<li>EB 52 90 : JMP 52h + NOP (즉, 54h로 점프하여 BPB 이후의 부트 코드가 실행)</li>
</ul>
<p>이후 BPB 항목을 참조하여 해당 볼륨의 운영체제를 로드하는 부트 코드가 실행된다.</p>
<h4 id="부팅과정">부팅과정</h4>
<p>위 과정을 더욱이 잘 알기위해서 기본적인 부팅과정을 알아 보겠다. </p>
<ul>
<li>cpu에 전원이 들어옴 -&gt; ROM BIOS 부트프로그램 POST 수행 -&gt; 부트 프로그램은 운영체제를 로드하기 위해 MBR이동 -&gt; 부팅가능한 파티션 찾음 -&gt; VBR로 이동 -&gt; NTLDR이 추가적인 정보 로드 -&gt; 윈도우 실행</li>
</ul>
<p>자세한 내용 참고 : <a href="http://forensic-proof.com/archives/178">http://forensic-proof.com/archives/178</a></p>
<h3 id="mft-상세">MFT 상세</h3>
<p>$MFT 파일이 존재한다. 이는 MFT가 MFT ENTRY로 이루어져있고, MFT 엔트리는 디렉토리 및 파일 당 하나 이상 만들어진다. 이렇게 만들어진 MFT ENTRY는 파일의 메타정보를 가진다. 이러한 영역을 파일로 만든 것이 $MFT이다. </p>
<p>참고적으로 MFT 영역의 16개 엔트리는 파일시스템 자체의 메타 역할 및 추가적인 특성을 지원하기 위해 파일시스템 포맷시 미리 할당된다. </p>
<h4 id="mft-엔트리-구조">MFT 엔트리 구조</h4>
<p><img src="https://velog.velcdn.com/images/min_fo/post/7fefed07-c59f-48c6-93ea-55ed91768107/image.png" alt=""></p>
<p>여기서 속성(Attr)은 상당히 중요하다. 일반적인 파일의 경우에는 위의 많은 속성 중 아래 그림과 같이 $STANDARD_INFORMATION, $FILE_NAME, $DATA 속성만 온다.</p>
<p>속성들은 크게 Resident 속성과 Non-resident 속성으로 나뉜다.</p>
<p>Resident 속성은 속성의 내용이 속성 헤더 바로 뒤에 위치하는 속성이다. 이에 반해, Non-resident 속성은 속성 내용이 너무 커서 MFT 엔트리 (1,024 바이트) 내부에 넣지 못할 경우, 별도의 클러스터를 할당 받아 저장하는 방식이다. 이때, 속성 내용 위치에는 할당 받은 클러스터의 위치 정보가 저장되어 있다</p>
<p>$DATA 속성은 700 byte 이상일 경우 Non-resident가 된다.</p>
<h4 id="클러스트-런">클러스트 런</h4>
<p>클러스터 런은 Non-resident의 속성 내용의 위치를 표시해준다. </p>
<p>상세한 내용은 <a href="http://forensic-proof.com/archives/590">http://forensic-proof.com/archives/590</a> 확인하길 바란다.</p>
<h3 id="속성-헤더">속성 헤더</h3>
<p>속성의 헤더는 공통된 헤더 뒤에, Resident 혹은 Non-Resident에 따라 헤더가 달라진다. </p>
<h3 id="속성-내용">속성 내용</h3>
<p>속성은 16가지가 존재하며, 속성에 따라 분석하는 방식이 다르다. 기본적으로 $name, $stand_info, $DATA 가 기초적임으로 이 3가지를 중점적으로 알아보길 바란다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[snd-reversingwithlena-tutorial31.tutorial]]></title>
            <link>https://velog.io/@min_fo/snd-reversingwithlena-tutorial31.tutorial</link>
            <guid>https://velog.io/@min_fo/snd-reversingwithlena-tutorial31.tutorial</guid>
            <pubDate>Fri, 07 Jul 2023 12:13:55 GMT</pubDate>
            <description><![CDATA[<h3 id="1-언패킹">1. 언패킹</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/0eb77bc0-676a-4d72-ad76-6576b00a8b13/image.jpg" alt="">
esp 트릭을 통해서, oep를 구한 뒤,  복구시킨다. 아래사진은 언패킹된 파일이다.
<img src="https://velog.velcdn.com/images/min_fo/post/2d963993-d0d1-45b0-8c9a-51e188e6dd69/image.jpg" alt=""></p>
<h3 id="2-문제-풀이">2. 문제 풀이</h3>
<p>아래 와 같은 부분이 바로 인증 루틴의 분기점이다. 이를 찾는방법은 스택을 통해서이다.</p>
<ol>
<li><p>registration 부분을 들어간 뒤, 멈춘다. </p>
</li>
<li><p>이후 사용자코드까지 실행을 시킨다. </p>
</li>
<li><p>코드의 시작부분(push ebp, mov ebp, esp)을 찾는다.</p>
</li>
<li><p>시작부분에 브레이크 포인트를 걸고 거슬러 올라가면서 분기점들을 모두 확인하면 도달할 수 있다.</p>
</li>
<li><p>만약 지속적으로 반복하는 루틴안에 있다면 이를 빠져나와야 한다. 
<img src="https://velog.velcdn.com/images/min_fo/post/8b7a284f-5cd2-4471-8620-fa8dde840f77/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/min_fo/post/b0782e5a-aff2-4e13-9c64-c58553781c3c/image.jpg" alt=""></p>
</li>
<li><p>데비안 특성을 이용한 다른 방식</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[nd-reversingwithlena-tutorial26.tutorial]]></title>
            <link>https://velog.io/@min_fo/nd-reversingwithlena-tutorial26.tutorial</link>
            <guid>https://velog.io/@min_fo/nd-reversingwithlena-tutorial26.tutorial</guid>
            <pubDate>Mon, 03 Jul 2023 15:28:28 GMT</pubDate>
            <description><![CDATA[<h3 id="1-실행">1. 실행</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/db0aa882-c6e7-4fee-b1ef-a1975b9157a1/image.jpg" alt=""></p>
<h3 id="2풀이">2.풀이</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/aa87ebf3-9158-46a3-878c-a066559c9b4f/image.jpg" alt="">
실패한 정보를 기반으로 string 서치로 분기문을 찾았다. 그 위에 call함수가 있고 test al, al이 있는 것으로 보아서 call 함수는 아이디와 비밀번호를 확인하는 함수이다.</p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/a4a13c1d-f93b-4d38-9c17-cb242f1a8b27/image.jpg" alt="">
위 사진 처럼 들어가보니 mov eax, ebx가 있는 것을 확인할 수 있고, 이를 아래 사진처럼 변경하면 된다.
<img src="https://velog.velcdn.com/images/min_fo/post/f1c5b764-facc-4a43-9d63-3f1149754074/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/min_fo/post/e597d461-84ba-4f35-b500-27d1bf6170a5/image.jpg" alt="">
하지만, 아르마딜로로 패킹되어 있기 때문에 그대로 패치하면 파일이 작동하지 않는다.
물론 oep를 찾고 iat를 만드로 pe를 재빌딩해도 되지만, 실시간 패치 방법을 사용했다.  아래 사진은 rpp이다
<img src="https://velog.velcdn.com/images/min_fo/post/5a591de6-0e88-4183-badc-ff87d6f09bb2/image.jpg" alt=""></p>
<h3 id="3-결과-값">3. 결과 값</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/6ea8281e-e1ba-4dad-a827-f2b763760106/image.jpg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[snd-reversingwithlena-tutorial24.tutorial]]></title>
            <link>https://velog.io/@min_fo/snd-reversingwithlena-tutorial24.tutorial</link>
            <guid>https://velog.io/@min_fo/snd-reversingwithlena-tutorial24.tutorial</guid>
            <pubDate>Sun, 25 Jun 2023 11:38:36 GMT</pubDate>
            <description><![CDATA[<p>아르마딜로 라는 언패킹을 하는 방식을 보여준다. 총 두가지인데 
첫번째 방식은 메모리 상에서 실시간으로 패칭이고, 두번째는 일반적으로 파일을 언패킹을 한 뒤, 라이센스를 우회하는 방식이다</p>
<h3 id="0-아르마딜로-패킹-안티리버싱">0. 아르마딜로 패킹 안티리버싱</h3>
<p>일단 아르마딜로는 여러가지 패킹하는 방식이 있지만 OutputStringA라는 함수의 오버플로우를 이용하여 올리디버거가 멈추게하는 방식이였다. 웃프게도 내가 사용한 디버거는 x64dbg이고, OutputStringA의 취약점은 없었기에 그냥 실행되었다... 하지만 프로그램 자체 오류상 디버깅을 하지못하였다.. </p>
<h3 id="1-패킹된-비주얼베이직-oep-찾는법">1. 패킹된 비주얼베이직 OEP 찾는법.</h3>
<p>TEXT 구간에 VB5!를 작성한다. 즉 심볼을 작성한다. 심볼을 작성한 주소를 찾는다. 심볼을 작성하기 위해서 작성할 주소를 스택에 올려야한다. 그렇기에 401000(베이스포인트:40000, text RVA : 1000)로 이동한다. 그 다음, text영역에서 push &#39;VB5! 주소&#39;를 검색하여 찾는다. 그 부분이 OEP이다.</p>
<p>이는 패킹된 파일이 비주얼 베이직이기 때문에 찾을 수 있다. 그렇다면 어떻게 비주얼 베이직 언어로 만들어는지 알수 있냐가 관건이다. 이는 dll를 보면 알 수 있다. </p>
<h3 id="2-실시간-패치">2. 실시간 패치</h3>
<p>Crack me를 대신 실습 파일로 설정하였다.
<img src="https://velog.velcdn.com/images/min_fo/post/2db1f397-01d3-4aae-8700-0bcd9b7b6888/image.jpg" alt="">
jne 때문에 파일이 실행이 안되어 아래 사진처럼 파일을 jmp로 변경하였다.
<img src="https://velog.velcdn.com/images/min_fo/post/a94bc3d6-150e-414b-8ad1-c9ff30be5f85/image.jpg" alt="">
아래는 R!SC.P.P.exe에 사용하는 파일이다. 
<img src="https://velog.velcdn.com/images/min_fo/post/d152fb86-ec4a-485f-8d7c-8f9488c309d4/image.jpg" alt="">
T는 타임이다. 5초 뒤에 파일이 실행되고 패치된다는 것이다. F의 경우 실행되는 파일이다. o의 경우 생성되는 파일이다. P는 패치이다. P의 구조는 패치주소/원래 형태/ 패치 형태이다. 
<img src="https://velog.velcdn.com/images/min_fo/post/b621ec21-9653-4fad-bf25-e3c314852c6e/image.jpg" alt=""></p>
<p>reversMe_crack.exe의 파일 실행원리는 다음과 같다.
1.CreatProcessA -&gt; 프로세스 실행
2.ReadProcessMemory, writeProcessMemory -&gt; 프로세스 패치
3. 끝</p>
<h3 id="3-실시간-패치-사용되는-곳">3. 실시간 패치 사용되는 곳</h3>
<p>패킹되어 있는곳에 바로 패치를 실행하면 파일이 실행되지 않는다. 또한, OEP를 찾고, IAT를 찾는게 힘들 경우 실시간 패치를 진행하면 된다.</p>
<p>게임핵을 만들때 많이 사용된다고 한다... </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[snd-reversingwithlena-tutorial23.tutorial]]></title>
            <link>https://velog.io/@min_fo/snd-reversingwithlena-tutorial23.tutorial</link>
            <guid>https://velog.io/@min_fo/snd-reversingwithlena-tutorial23.tutorial</guid>
            <pubDate>Sun, 25 Jun 2023 11:38:29 GMT</pubDate>
            <description><![CDATA[<h3 id="꿀팁">꿀팁</h3>
<p>패킹이 되었는데 어떠한 정보인지 모른다면
pestdio
peid
바이러스토탈</p>
<p>등 다양한 프로그램에 올려보는 것이 중요하다.</p>
<h3 id="풀이">풀이</h3>
<p><img src="https://velog.velcdn.com/images/min_fo/post/be00d3ba-637f-4d11-8aae-a32a21899346/image.jpg" alt="">
언패킹을 해야되서 보면, push ad가 있을 것을 알수 있음으로 upx와 같이 스택에 브레이크 포인트를 걸어서 oep를 찾는다
<img src="https://velog.velcdn.com/images/min_fo/post/6bb84e73-3813-4663-a20d-0d6847b20ae8/image.jpg" alt="">
아래 코드는 진행되는 코드다 nop과 jmp문을 합쳐서 코드가 어떻게 진행되는지 어렵게 만든다. 이를 빈 공간에 패치를 통해서 해결하면된다.
<img src="https://velog.velcdn.com/images/min_fo/post/c00c124d-1d71-446f-b6a5-7e1dcb790053/image.jpg" alt=""></p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/ca0471d6-ab39-46b5-9180-4792864eb435/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/min_fo/post/9fe4ba2d-257b-4b04-b691-a640a603de05/image.jpg" alt="">
아래는 패치한 코드이다.</p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/b62e7c0e-72f6-4bef-9abb-c7985554c764/image.jpg" alt=""></p>
<h3 id="iat-찾는법">iat 찾는법</h3>
<p>오토 서치 기능이 scylla 있긴하지만, 완벽하지는 않다 그렇기에 수동으로 입력해야된다. 일단 iat를 찾아야 한다. 현재 구역에서 바이너리 찾기를 통해서(shift + ctrl + b)를 통해서 FF 25를 친다. FF 25는 포인터 점프이다. 이를 검색하면 아래와 같이 난온다. 
<img src="https://velog.velcdn.com/images/min_fo/post/c7991fa0-0dc2-44a1-b3c7-41fc796abe24/image.jpg" alt="">
이후에 위에 빨간색 줄쳐진 부분을 통해서 iat 위치의 시작점을 찾는다.
<img src="https://velog.velcdn.com/images/min_fo/post/e12a9f8c-d575-40ea-80c4-3954f04e158c/image.jpg" alt="">
그후에 iat의 끝은  dll 이름이 나오는 곳이다.</p>
<h3 id="궁금한점">궁금한점</h3>
<ol>
<li>FF 25의 검색을 통해서 찾은 구역은 무슨 구역인지</li>
<li>iat의 끝은 왜 dll 이름이 나오는 구역인지</li>
<li>dll 이름이 왜 하나만 있는지 </li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[snd-reversingwithlena-tutorial22.tutorial]]></title>
            <link>https://velog.io/@min_fo/snd-reversingwithlena-tutorial22.tutorial</link>
            <guid>https://velog.io/@min_fo/snd-reversingwithlena-tutorial22.tutorial</guid>
            <pubDate>Sun, 25 Jun 2023 11:38:24 GMT</pubDate>
            <description><![CDATA[<p>api redircetion에 대해서 배운다. 이는 iat에 dll에 내부에 있는 함수 주소를 넣는 것이 아니라 다른 함수 주소를 준다. 이 주소안에 실질적인 함수 주소가 있다. 이는 언패킹에 어려움을 준다.</p>
<p>파일을 언패킹한 뒤에 보면, iat를 인식하지 못하고 있다. 물론 iat를 구할때, va나 size를 잘못 줘서 발생할 수 도 있는 문제이다.
<img src="https://velog.velcdn.com/images/min_fo/post/e935bd6c-e508-48fc-91a3-f55fc6e08be6/image.jpg" alt="">
참고로 rav는 iat 주소 값이고, ptr은 438040 안에 있는 값이다.
<img src="https://velog.velcdn.com/images/min_fo/post/1bbfd97f-cd88-4904-ae12-10b2bfd90579/image.jpg" alt="">
위 사진 처럼 invalid 된 iat를 열어보면, 안에 kernel32.dll에 있는 findclose함수를 불로오는 걸 알 수 있다. 또한 findclose함수 이외에 어떠한 작동도 하지 않는 함수인것을 알 수 있다. 즉 redirection 함수임을 알 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/012e8ee1-54b6-4994-810f-13c21a2b0a86/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/min_fo/post/a12ce5d7-1023-4df7-86cb-84c4c4d32e9e/image.jpg" alt="">
파일을 실행하면 뒤에처럼, 75D23840이라는 함수가 잘들어오는 것을 알수 있다.
<img src="https://velog.velcdn.com/images/min_fo/post/c4d51d70-ea92-4097-b343-d48ba8fd61f2/image.jpg" alt="">
분석해보면 다음과 같다. getprocAddress 함수라는 값은 함수의 주소값을 eax를 통해서 반환해준다. 그 후에 iat에 값을 넣는다.
<img src="https://velog.velcdn.com/images/min_fo/post/bd55dc2d-c42e-49ce-8ba6-daae2e0cdd68/image.jpg" alt="">
그 후에 빨간 부분에서 함수에 값을 넣는것을 알 수 있다.
<img src="https://velog.velcdn.com/images/min_fo/post/f1c2dc8f-b1f1-470e-9574-0ab533e9a193/image.jpg" alt="">
위사진은  iat의 구성이다. dll의 함수끼리 묶여있고 dll이 끝나면 8바이트의 00 00 00 00 나와서 구분해준다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[snd-reversingwithlena-tutorial21.tutorial]]></title>
            <link>https://velog.io/@min_fo/snd-reversingwithlena-tutorial21.tutorial</link>
            <guid>https://velog.io/@min_fo/snd-reversingwithlena-tutorial21.tutorial</guid>
            <pubDate>Sun, 25 Jun 2023 11:38:14 GMT</pubDate>
            <description><![CDATA[<p>IAT 와 EAT 설명 사이트 : <a href="https://jamielim.tistory.com/entry/Reversing-IAT%EC%99%80-EAT-%EB%A1%9C%EB%94%A9-%EA%B3%BC%EC%A0%95">https://jamielim.tistory.com/entry/Reversing-IAT%EC%99%80-EAT-%EB%A1%9C%EB%94%A9-%EA%B3%BC%EC%A0%95</a></p>
<p><a href="https://idlecomputer.tistory.com/180">https://idlecomputer.tistory.com/180</a></p>
<h3 id="dll이란">DLL이란</h3>
<p>Dynamic Link Library, 동적링크로 실행파일에서 해당 라이브러리 기능을 사용시에만 참조해 기능을 호출할 수 있는 방법이다. 여러 프로세스에서 공유하며 쓰는 라이브러리로 멀티태스킹 환경에서 각 프로세스마다 라이브러리를 갖고 그 용량을 차지하는 것보다 메모리에 한 번 로딩시켜 프로세스마다 공유시키면 메모리를 더 효율적을 사용할 수 있다.</p>
<h4 id="실제-dll-로딩-방식은-2가지-입니다">실제 DLL 로딩 방식은 2가지 입니다.</h4>
<p>프로그램내에서 사용되는 순간에 로딩하고 사용이 끝나면 메모리에서 해제 시키는 방법(Explicit Linking)과
프로그램 시작할 때 같이 로딩되어 프로그램 종료 할 때 메모리에서 해제되는 방법(Implicit Linking)이 있습니다.</p>
<h3 id="라이브러리와-dll의-차이점">라이브러리와 DLL의 차이점</h3>
<p>라이브러리는 링크시 필요함
DLL는 프로그램 실행 혹은 함수 실행시 필요함</p>
<h3 id="iat가-존재하는-이유">IAT가 존재하는 이유</h3>
<p>호환성 때문이다. </p>
<h3 id="가상메모리와-가상-공간-dll-방식">가상메모리와 가상 공간 dll 방식</h3>
<p>:<a href="https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=yheekeun&amp;logNo=220709173937">https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=yheekeun&amp;logNo=220709173937</a></p>
<h3 id="int를-iat에-입력하는-이유">INT를 IAT에 입력하는 이유</h3>
<p>IID 에  INT에 있는 주소를 IAT에 옮기는 이유가 뭘까라는 의문이 든다
그냥 INT 주소를 옮기면 안되나 라는 생각이 든다. 하지만, DLL이 프로세스에 올라갈때, imagebase는 항상 고정이 아니다. INT 주소는 DLL 내부에 위치이다. IAT는 프로세스의 위치이다. </p>
<h3 id="dll-import-작동-원리">DLL import 작동 원리</h3>
<ol>
<li>프로그램 내에 임포트 테이블 존재한다.</li>
<li>임포트 테이블이란 DLL 헤더를 가지고 있으며, 각각에 필요한 함수가 있다.</li>
<li>로더가 필요한 DLL을 로딩한다.</li>
<li>DLL에 IID라는 것이 존재한다. IID 내부에 INT와 IAT가 존재한다. INT에는 IMAGE_IMPORT_BY_NAME가 존재한다. IMAGE_IMPORT_BY_NAME에는 name과 hint가 존재한다. 이를 통해서 함수의 주소를 얻는다.<ul>
<li>추가적으로 IID-&gt; OriginalFirstThunk를 사용안하고 함수의 주소를 찾기도 한다. </li>
</ul>
</li>
<li>IAT 배열 값에 위에서 구한 함수 주소를 입력합니다. 주소가 들어가기 전에 배열에는 함수의 이름이 존재한다.</li>
<li>이는 INT가 NULL만나기 전까지 반복한다.</li>
</ol>
<h3 id="문제풀이-fsg-20-unpackme">문제풀이 FSG 2.0 UnPackMe</h3>
<p>문제가 열리지 않는다...
<a href="https://www.virustotal.com/gui/file/d5c694a33baf56816ff3907ac6e1ee56f5fb78f1c06ada04f3b6cb22c3893f21/details">https://www.virustotal.com/gui/file/d5c694a33baf56816ff3907ac6e1ee56f5fb78f1c06ada04f3b6cb22c3893f21/details</a> </p>
<p>바이러스 토탈을 돌리면 어떤 패커를 사용한지 알수 있다. 구글링을 통해서 FSG는 JMP 구문을 통해서 원본 코드로 갈수 있다 이를 이용하면 OEP를 찾을 수 있다.</p>
<h3 id="문제풀이-upx">문제풀이 UPX</h3>
<p>UPX도 마찬가지로 바이러스 토탈에 올리면 어떠한 패커를 사용한지 알수 있고, 이를 기반으로 구글링을 통해서 언패킹 정보를 얻어서 언패킹하면된다. PUSHAD -&gt; popAD -&gt; OEP 진입한다는 루틴을 이용하면 된다고 한다. </p>
<p><img src="https://velog.velcdn.com/images/min_fo/post/f24220f1-35b5-4db6-8a02-acadd094afd0/image.jpg" alt="">
UPX의 특징을 잘 이용하여 OEP로 진입한다.
<img src="https://velog.velcdn.com/images/min_fo/post/b4957e18-beaf-40dc-9239-6bb2774ff007/image.jpg" alt="">
IAT가 문제가 생겨서 트리를 삭제시켰다.
<img src="https://velog.velcdn.com/images/min_fo/post/caff1d67-ab23-4bca-a479-d51f447a43e0/image.jpg" alt="">
그 후에 삭제된 IAT를 제외하고 나머에 맞게  VA와 SIZE  변경시키고 덤프를 뜬뒤, fix Dump를 하였다.</p>
<p>프로그램이 정상적으로 작동하였다. 하지만 왜 IAT한개 삭제되면 정상적으로 작동이 되지 않을 것 같은데 정상적으로 작동했는지는 의문이다. </p>
<h3 id="문제풀이-unpackme_winupack039">문제풀이 UnPackMe_WinUpack0.39</h3>
<p><img src="blob:https://velog.io/dd0b6fbf-f6e5-4d50-8a6b-8b9b198f9cdb" alt="업로드중..">
winUpack의 특징도  UPX랑 같이 초반에 스택이 변경된 후 다시 그 위치로 스택이 다시 돌아올때가 OEP이다. 그 특징을 이용하면 언패킹이 가능하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[snd-reversingwithlena-tutorial20.tutorial]]></title>
            <link>https://velog.io/@min_fo/snd-reversingwithlena-tutorial20.tutorial</link>
            <guid>https://velog.io/@min_fo/snd-reversingwithlena-tutorial20.tutorial</guid>
            <pubDate>Wed, 14 Jun 2023 10:24:47 GMT</pubDate>
            <description><![CDATA[<h3 id="기본적인-용어">기본적인 용어</h3>
<p>EP : entry point
OEP : origin entry point 
PEP : packed  entryl point </p>
<p>언패킹은 OEP를 찾는 것이다. </p>
<h3 id="scylla-사용-방법">scylla 사용 방법</h3>
<ol>
<li>언패킹 후 덤프를 뜨는 것이 목적이라면 먼저 OEP 까지 진입하자. </li>
</ol>
<ol start="2">
<li>현재 EIP가 OEP에 위치한다면 플러그인 탭에서 Scylla를 선택한다. </li>
</ol>
<ol start="3">
<li>중간 왼쪽 부분을 보면 현재 EIP 주소에 맞게 OEP가 자동으로 설정되어 있을테니 굳이 추가할 필요는 없고 바로 오른쪽을 보면 &quot;IAT Autosearch&quot;라는 버튼이 있다. 이것을 클릭한다. 클릭 후 두 개 정도의 확인 버튼이 팝업된다. </li>
</ol>
<ol start="4">
<li>다음으로는 바로 아래의 버튼인 &quot;Get Imports&quot; 버튼을 클릭한다. </li>
</ol>
<ol start="5">
<li>이후 오른쪽의 &quot;Dump&quot; 버튼을 클릭하면 덤프된 exe를 저장시킬 위치를 선택할 수 있다. 기본적으로 원본 exe 이름 뒤에 &quot;_dump&quot;라는 이름이 붙어서 저장되는 것을 볼 수 있을 것이다. 저장된 결과물은 간단하게 덤프한 것으로서 IAT가 복구되지 않아서 실행되지 않을 것이다. </li>
</ol>
<ol start="6">
<li>이제 바로 아래의 &quot;Fix Dump&quot; 버튼을 클릭한다. 그리고 방금 전 저장했던 덤프한 exe 파일을 불러온다. 그러면 또 다른 실행 파일이 생성되며 (이름 뒤에 &quot;_SCY&quot;가 붙는다) 최종 결과물로서 실행까지 되는 것을 확인할 수 있다.</li>
</ol>
<h3 id="oep를-찾는법">OEP를 찾는법</h3>
<ol>
<li><p>패커에 따라 언패킹하는 방식은 모두 다르다.</p>
</li>
<li><p>하지만, 기본적으로 프로그램이 실행되기 위해서 상대 메모리 주소가 패킹 이전과 같아야 한다.</p>
</li>
<li><p>코드 영역으로 들어가면 그 것이 OEP라고 의심할 수 있다.</p>
</li>
</ol>
]]></description>
        </item>
    </channel>
</rss>