2022-06-23
- -
์ค๋ ์์
๋ชฉํ
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
# ip route 0.0.0.0 0.0.0.0 192.168.0.1
# access-list 1 permit 192.168.100.0 0.0.0.255
# ip nat inside source list 1 int fa0/1 over
# int fa0/0
# ip nat inside
# int fa0/1
# ip nat outside
# exit
INT / IAT
(Import ๊ด๋ จ Table)
๋ผ์ด๋ธ๋ฌ๋ฆฌ / DLLํ์ผ SYSํ์ผ
์ ํ๋ฆฌ์ผ์ด์
์ด ์คํํ ๋
DOS์์ ์
๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ๋ถ ํฌํจํด์ ์ฝ๋ฉ
ํจ์๋ฅผ ๋ถ๋ฌ์ค๋ ์์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์
kernel32.dll ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์
์ฌ๋ฌ๊ฐ์ ํจ์๋ค
Import Name Table -> DLL ์ด๋ฆ์ ์ฐพ๊ณ
Import Application Table -> ํจ์๋ฅผ ์ฐพ๋๋ค
IAT INT
Data Directory[1] -> Import
-> 0000 7604(RVA) = ์์น
7604(RVA) - 1000(VA) + PDR(400) = 6A04
-> 0000 00C8(RVA) = ํฌ๊ธฐ
IMAGE_IMPORT_DESCRIPTOR {
union {
DWORD Characteristics;
DWORD OriginalFirstThunk; // INT(Import Name Table) address (RVA)
};
DWORD TimeDateStamp;
DWORD ForwarderChain;
DWORD Name; // library name string address (RVA)
DWORD FirstThunk; // IAT(Import Address Table) address (RVA)
} IMAGE_IMPORT_DESCRIPTOR;
1. NAME์ ์์น๋ฅผ ๋ฐ๋ผ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(DLL)์ ์ด๋ฆ์ ํ์
ํ๋ค. (O)
2. OriginalFirstThunk(INT)์ ์ฃผ์๋ฅผ ๋ฐ๋ผ๊ฐ์ ํจ์ ์์ ์ฃผ์๋ฅผ ํ์
ํ๋ค.
3. FirstThunk(IAT)์ ์ฃผ์๋ฅผ ๋ฐ๋ผ๊ฐ์ ์ค์ ๋ก๋ฉ ์ฃผ์๋ฅผ ํ์
ํ๋ค.
2. OriginalFirstThunk 0000 7990
-> 7990 -> 6D90
--> 7A7A -> 6E7A : PageSetupDlgW
1. Name 0000 7AAC
-> 7AAC --> 6EAC : comdlg32.dll
3. FirstThunk 0000 12C4
-> 12C4 --> 6C4 : 76324906
010012C4
comdlg32.dll ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ PageSetupdlgW ํจ์๋ฅผ ํธ์ถ
EAT
Export Application Table
EAT ์์ ์ฃผ์ : 0000262C
-> 262C -> 1A2C
EAT ์ฌ์ด์ฆ : 00006CFD
EAT IAT์ ์ฐจ์ด์
IAT๋ Import๋๋ฌธ์ ์ฌ๋ฌ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ด
EAT๋ ๋ณด๋ด๋ ์ญํ ๋ง ํ๊ธฐ๋๋ฌธ์ ๋จ ํ๊ฐ๋ง ์กด์ฌ
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ๋ค์์ ํจ์
๊ทธ๋์ ๊ทธ ํจ์๋ณ๋ก ๋ฐฐ์ด(Oridnal, ์์)์ด ์กด์ฌ
typedef struct _IMAGE_EXPORT_DIRECTORY {
DWORD Characteristics
DWORD TimeDateStamp
WORD MajorVersion
WORD MinorVersion
DWORD Name -> kernel32.dll
DWORD Base
DWORD NumberOfFunctions -> kernel32.dll์ ํจ์ ๊ฐ์
DWORD NumberOfNames -> kernel32.dll์ ์ด๋ฆ์ ๊ฐ์ง ํจ์ ๊ฐ์
DWORD AddressOfFunctions -> // ํจ์ ์ฃผ์ ๋ฐฐ์ด(EAT)
DWORD AddressOfNames -> //ํจ์๋ช
๋ฐฐ์ด
DWORD AddressOfNameOrdinals -> // ํจ์ ์์ ๋ฐฐ์ด
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY
AddressOfFunctions ๋ ์ค์ ํจ์ ์์ ์ฃผ์๊น์ง์ offset ๋ฐฐ์ด์ ๊ฐ๋ฆฌํด
AddressOfNames ๋ ํจ์ ์ด๋ฆ์ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํด
AddressOfNameOrdinals ๋ ํจ์์ Ordinal ๋ฐฐ์ด์ ๊ฐ๋ฆฌํด
DWORD NumberOfFunctions -> 03B9
DWORD NumberOfNames -> 03B9
DWORD AddressOfFunctions -> RVA 2654 -> RAW 1A54
DWORD AddressOfNames -> RVA 3538 -> 2938
DWORD AddressOfNameOrdinals -> RVA 441C -> 381C
1. AddressOfNames์ผ๋ก kernel32.dllํ์ผ์ ํจ์ ๋ฐฐ์ด๋ก ์ด๋
-> 3๋ฒ์งธ ๋ฐฐ์ด์ธ index[2] 4BB3(3FB3)๋ก ์ด๋
-> 3FB3๋ก ์ด๋ํ๋ฉด AddAtomW๋ผ๋ ํจ์๊ฐ ๋์จ๋ค
-> orinal 2๋ฒ์ธ ํจ์
2. AddressOfNameOrdinals ์ผ๋ก orianl์ ํ์ธํ๋ค
3. AddressOfFunctions์ผ๋ก ์ค์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ก๋ฉ๋๋ ๊ฐ์ ๊ตฌํ๋ค.
0003 26D9
7C80 0000
7C83 26D9
๊ณผ์
Helloworld.exe ํ์ผ์ WindowsPE๋ถ์์ ์ค์ํ์์ค
1. Section์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์์น์ ๊ฐ์ ์ฐพ์ผ์์ค.
์์น : 000000EE ๊ฐ์ : 4๊ฐ
2. Optional Header์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์์น์ ๊ฐ์ ์ฐพ์ผ์์ค.
์์น : 000000FC ๊ฐ : E0
3. Address of EntryPiont์ ์ญํ ๋ฐ ์์น์ ๊ฐ์ ์ฐพ์ผ์์ค.
์ญํ : ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ ์์์ ๊ฐ : 11A0
4. Image Base ์ญํ ๋ฐ ์์น์ ๊ฐ์ ์ฐพ์ผ์์ค.
์ญํ : ๊ฐ์ ์ฃผ์๋ฐฉ์์์ ๊ธฐ์ค์ ๊ฐ 00400000
5. Section Alignment์ File Alignment์ ์์น์ ๊ฐ์ ์ฐพ์ผ์์ค
Section : 1000 , File : 200
6. ๊ฐ ์น์
์ offset ๋ฐ address ์์ ์์น์ ํฌ๊ธฐ๋ฅผ ์ฐพ์ผ์์ค.
--text Section
์์์์น : 1000 ์์์์น : 400
์ด ํฌ๊ธฐ : 60A4 ์ด ํฌ๊ธฐ : 6200
--rdata Section
์์์์น : 8000 ์์์์น : 6600
์ด ํฌ๊ธฐ : 1BB0 ์ด ํฌ๊ธฐ : 1C00
--data Section
์์์์น : A000 ์์์์น : 8200
์ด ํฌ๊ธฐ : 18DC ์ด ํฌ๊ธฐ : E00
7. user32.dll์ INT์ IAT์ ์์น๋ฅผ ์ฐพ์ผ์์ค
Import์ ์์ ์์น(RVA) : 965C[7C5C]
Import์ ์ด ํฌ๊ธฐ : 3C
INT : 977C[7D7C] -> 0000 9784 -> 00409784
NAME : 9792[7D92] -> USER32.DLL
IAT : 80E4 -> 004080E4 MessageBoxW
11B0
'๐ Secure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL Injection (0) | 2022.06.29 |
---|---|
2022-06-27 (0) | 2022.06.28 |
2022-06-22 (0) | 2022.06.28 |
2022-06-21 (0) | 2022.06.28 |
2022-06-20 (0) | 2022.06.28 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค