์ƒˆ์†Œ์‹

์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด

๐Ÿ“  Secure

2022-06-22

  • -
๋ฐ˜์‘ํ˜•

์˜ค๋Š˜ ์ˆ˜์—… ๋ชฉํ‘œ

1. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๊ธฐ (์„œ๋ฒ„ ๋ฐ ๋„คํŠธ์›Œํฌ ๋“ฑ, ๊ธฐ๋ณธ ์ธํ”„๋ผ ๊ตฌ์ถ•)
- ์˜ค์ „ -
2. ์œˆ๋„์šฐ PE
- ์˜คํ›„ -
3. GSN3 ์™ธ๋ถ€ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ
- ์˜คํ›„ -

Inside : DB, Win7, Win10
DMZ : Web, Mail, DNS, NTP

Image_NT_headers32
 - Signature
 - Image_File_headers32
 - Image_Optional_header32
- address of entry point
- Image base

RVA
VA



Section Alignment : 0000 1000
File Alignment : 0000 0200
--> ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค
Section = ๋ฉ”๋ชจ๋ฆฌ
file = ํŒŒ์ผ

Number Of Rva And Sizes : 0000 0010
-> Image_Data_Directory์˜ ๋ฐฐ์—ด ๊ฐœ์ˆ˜
 - 16๊ฐœ Data Driectrory๊ฐ€ ์กด์žฌํ•œ๋‹ค.

158๋ถ€ํ„ฐ ์‹œ์ž‘
Data Directory[0] -> Export
 -> 0000 0000 / 0000 0000
Data Directory[1] -> Import
 -> 0000 7604 / 0000 00C8
..
..
..
Data Directory[F] -> 
--- ์œ„์—์„œ ๊ตฌํ•œ ์ฃผ์†Œ๊ฐ’์€ ๋‚˜์ค‘์— INT IAT์™€ EAT์—์„œ ์‚ฌ์šฉํ•  ์˜ˆ์ •
INT = Import Name Table
IAT = Import Application Table



-----------------------------------------NT ํ—ค๋” ๋ ----------
๊ฐ ์˜์—ญ๋ณ„(text, data, rsrc) ํ—ค๋” ๋ณด๊ธฐ
์˜์—ญ๋ณ„ ํ—ค๋”์˜ ๊ตฌ์กฐ๋Š” ์ „๋ถ€ ๋™์ผํ•˜๋‹ค

typedef struct _IMAGE_SECTION_HEADER {
  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];
  union {
    DWORD PhysicalAddress;
    DWORD VirtualSize;  -> ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์„น์…˜์ด ์ฐจ์ง€ํ•˜๋Š” ํฌ๊ธฐ
  } Misc;
  DWORD VirtualAddress;  -> ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์„น์…˜์ด ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์†Œ(RVA)
  DWORD SizeOfRawData;  -> ํŒŒ์ผ์—์„œ ์„น์…˜์ด ์ฐจ์ง€ํ•˜๋Š” ํฌ๊ธฐ
  DWORD PointerToRawData; -> ํŒŒ์ผ์—์„œ ์„น์…˜์ด ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์†Œ
  DWORD PointerToRelocations;
  DWORD PointerToLinenumbers;
  WORD  NumberOfRelocations;
  WORD  NumberOfLinenumbers;
  DWORD Characteristics;  -> ์†์„ฑ
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

=== text section header ===
VirtualSize : 0000 7748 ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์„น์…˜์ด ์ฐจ์ง€ํ•˜๋Š” ํฌ๊ธฐ
VirtualAddress : 0000 1000 ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์„น์…˜์ด ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์†Œ
SizeOfRawData : 0000 7800 ํŒŒ์ผ์—์„œ ์„น์…˜์ด ์ฐจ์ง€ํ•˜๋Š” ํฌ๊ธฐ
PointerToRawData : 0000 0400 ํŒŒ์ผ์—์„œ ์„น์…˜์ด ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์†Œ

=== data section header ===
VirtualSize : 0000 1BA8
VirtualAddress : 0000 9000
SizeOfRawData : 0000 0800
PointerToRawData : 0000 7C00

=== rsrc section header ===
VirtualSize : 0000 8304
VirtualAddress : 0000 B000
SizeOfRawData : 0000 8400
PointerToRawData : 0000 8400


----->
RVA(๋ฉ”๋ชจ๋ฆฌ) to RAW(ํŒŒ์ผ์— ์žˆ์„ ๋•Œ)

ํŠน์ • ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋‚˜์™”์„ ๋•Œ
์ด ์œ„์น˜(HxD๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š”)๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค!

๊ณต์‹ :
RAW = (๋‚ด๊ฐ€ ์ฐพ๋Š”)RVA - Virtual Address + Point to Raw Data

RVA : 5000์ผ ๋•Œ RAW(offset ์ฃผ์†Œ)๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?
RAW : RVA(5000) - VA(1000) + PRD(400) = 4400


RVA : 13314์ผ ๋•Œ RAW(offset ์ฃผ์†Œ)๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?
RAW : RVA(13314) - VA(B000) + PRD(8400) = 10714


RVA : ABA8์ผ ๋•Œ RAW(offset ์ฃผ์†Œ)๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?
RAW : RAV(ABA8) - VA(9000) + PRD(7C00) = 97A8












๋ฐ˜์‘ํ˜•

'๐Ÿ“  Secure' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2022-06-27  (0) 2022.06.28
2022-06-23  (0) 2022.06.28
2022-06-21  (0) 2022.06.28
2022-06-20  (0) 2022.06.28
2022-06-16  (0) 2022.06.28
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.