공통
1. 전원인가   
2. POST 초기화 ( 프로그램 카운터 초기화)
3. BootStrap 이라 불리우는 ROM BIOS 초기화
4. 시스템버스, RTC, VIDEO, RAM, KEYBOARD 순서대로 점검
5. cd /hdd /floopy 드라이브 결정을 위한 버스 경로 지정
6. 시스템 구성정보와 CMOS 비교, 다르면 Setup 프로그램 업데이트
7. SCSI BIOS와 같이 시스템에 포함된 바이오스 정보 로딩
8. BootStrap( POST) 종료
: MBR, 또는 VBR(floopy) 로딩 
9. MBR의 파티션테이블에서 부팅가능한 파티션 영역의 BR주소를 찾아서 이동



DOS

10. IO.sys로드
11. SYSINIT 루틴 동작( SYSINIT루틴은 IO.sys의 서브루틴이다 )
12. SYSINIT 는 DOS 메모리 영역의 가장 위쪽에 연속적으로 자신을 복사
13. SYSINIT가 MSDOS.sys 로드 ( 시스템 장치의 상태체크, 기본 장치 드라이버 초기화)
14. SYSINIT가 config.sys파일 로드 ( DEVICE /INSTALL /SHELL )
15. command.com 수행
16. autoexec.bat파일이 존재시 해당 파일을 실행
17. autoexec.bat파일 미존재시 time/ date / copyright 정보와 함께 prompt 출력


Windows 2000 / xp 

10. NTLDR로드 ( protected mode로 동작 ) 
11. 파일 시스템 시작 및 BOOT.ini 파일 로드 ( 파티션정보, 부팅순서)
12. 윈도우가 아닌 계열은 BOOTSEC.DOS 파일이 로드 됨.
13. SCSI 드라이브가 존재할 시에는 SCSI 드라이브의 드라이버를 위해 NTBOOTDD.sys 를 포함하여 읽어들임
14. NTDETECT.com 수행
: 시스템에 설치된 하드웨어 / NTLDR에 의해 통과된 구성 정보를 찾아 실행 프로파일을 수행
15. NTDETECT.com에 의해 이전 단계에서 획득된 구성 정보는 NTLDR에 의해 NTOSKERNEL.exe로 넘어감 
: NTOSKERNEL은 "kernel / HAL / 시스템레지스트리" 정보를 로딩

                      <윈도우 커널구조 > 
**** 커널의 레벨을 나눈 이유는 안정성, 프로그램이 죽어도 커널은 안죽게 하기 위해.

 
16. 네트워킹코드( tcp / ip와 같은), 드라이버들이 nt 부트 프로세스에서 로딩된다. 
: 서비스 중 하나인 로그온 서비스가 구동되고 , 정상적으로 로그온 시에 "good" 상태는 마지막 성공한 구성으로 업데이트 되어 진다. 
17. 로그온과 동시에 장치 탐지가 수행되고, 장치가 발견되면 driver.cab파일을 압축 해제 후 드라이버를 설치하며, 드라이버가 존재하지 않으면  사용자에게 요구한다. 소프트웨어와 하드웨어의 구성을 위한 상호 허가가 발생된다. 


cf. 윈도우 비스타 , 7, 2008은 NTLDR 대신에 Bootmgr( Windows Boot Manager ) 가 로딩된다. 


BOOT.ini 대신에 시스템 "루트디렉토리에\BOOT" 디렉토리에 위치한 BCD 파일을 Bootmgr이 읽어들임
: BCD파일은 DB 파일
BCD파일은 레지스트리 HIVE와 동일함

NTOSKERNEL 대신에 Bootmgr이 WINLOAD.exe 호출
: Bootmgr은 VHD파일을 읽을 수 있어 멀티 부팅도 가능케 해준다. 

WINLOAD.exe는 NTOSKERNEL을 구동하고 부트 클래스 드라이버를 로드 한다. 

 
 
AND

1. CASE : 정전기 방지해야 함
2. ROM
3. RAM : Hibernation이슈  -->>> Hiberfil.sys 
: 최대 절전 모드시 Hiberfil.sys파일이 생성된다.
파일의 용량은 램사이즈와 동일하게 생성된다.
파일의 저장 경로는  <c:\>
4. Powersupply
5. Main Board 
6. CPU
7.Heat Sink and Fan
8. Hard Drive
:  CHS_MFM_RLL / LBA-ZBR /ATA 모드
9. SCSI
10. IDE
11. RAID
12. Flopy Drive
13. CDROM/ CDRW /DCVDROM / DVDRW
14. USB controller
15. USB port
16. IEEE1394 / 1394a / 1394b --800)786.432Mbps)
17. Sournd
18. VGA
19. ISA/EISA/PCI/PCI Express 등
20. RTC( real-time clock)
: CMOS BIOS Battery 로 불리나 실제 명칭은 RTC / NvRam
: 시스템 시간/ 날짜 기록
21. NvRAM
:CMOS data 저장
22. CMOS
: Comlermentrary Metal Oxide Semiconductior. 하웨어 반도체. 컴퓨터의 부팅디스크, 시각등을 기록. 베터리가 없으면소멸됨
RTC(시스템의날짜시간저장 ) / NvRam(메모리크기,드라이브타입,부팅순서및 구성정보등의 CMOS data저장) 라고 불리우는 CMOS 칩이 존재한다. 이 칩이 CMOS방식으로 만들어져 있다. 
23. CMOS Battery
24. BIOS
: OS 와 H/W 사이에 존재
low level software, Setup Program 
운영체제와 하드웨어 사이의 입출력을 담당하기 위해 저수준의 소프트웨어와 드라이버로 이루어진 펌웨어.
운영체제는 하드웨어와 통신하기 위해 하드웨어 구성을 알 필요없고 중간매개체인 BIOS와 통신하면된다. 
이는 하드웨어에 포함시켜둔다. --->>> 롬에 저장

CMOS Vs BIOS
: 부팅시 부팅설정을 하기 위한 파란 화면에 뜨는 내용들은 실제 CMOS(RTC/NvRAM)에 저장되어 있다. 하지만 이런 화면이 뜨게 하는 프로그램은 ROM BIOS에 존재 한다. BIOS프로그램이 COMS에 저장된 내용을 읽어와 설정할 수 있도록 보여주는 것이다. 
 

25. NIC / Modem
26. Parrel port /serial port

 

'Forensic & 침해사고대응' 카테고리의 다른 글

컴퓨터 부팅 프로세서  (0) 2011.08.24
리틀엔디안 빅엔디안 내부 원리  (0) 2011.08.24
RISC VS CISC  (0) 2011.08.24
[펌] 리틀엔디안 & 빅 엔디안  (0) 2011.08.24
메모리 덤프하기  (0) 2011.08.22
AND

CISC 구조 : 리틀엔디안( 인텔x86, 일반적인 PC)   사용
RISC 구조 : 빅엔디안 ( 모토로라 , SPARQ, unix ) 사용

CISC 와 RISC  비교는 이전글을 참조하세요 ( 
http://dbckdgns0515.tistory.com/entry/RISC-VS-CISC )

장단점을 논할 순 있지만, 어떤게 더 좋다고 말하기는 달걀의 위에서부터 까먹냐 아래서부터 까먹냐 차이처럼 별 의미 없다고 생각됩니다. 각각 용도에 달리 적용될 수 있기 때문이지요. 


 
다음을 살펴보겠습니다. 

다음에 0xf0f0 라는 16진수가 있을때 각 구조는 내부적으로 다음과 같이 배열됩니다.

빅엔디안




리틀엔디안 

: 확장성이 좋겠네요.  추가될때마다 뒤에다가 붙이면되니까요. 빅엔디안은 다 쭉 밀어야 겠군요. 


우리가 읽게 되는 16진수  0xf0f0 은 앞에 f0가 2^8 ~ 2^15 입니다. 뒤에 f0 는 2^0 ~ 2^7 이구요.  즉 우리들은 일반적으로 빅엔디안과 같은 형식으로 16진수를 읽고있습니다.  0x1234하면 2^8 ~2^15 승의 범위가 0x12 ,  2^0 ~ 2^7 는 0x34 이런식으로요.


그래서 우리가 MBR영역의 끝을 알리는 시그니처를 0x55aa라고 읽어도 리틀엔디안을 사용하는 시스템에서 파일시스템 덤프를 떠보면 MBR 맨 마지막에 AA 55 이렇게 나오는 것입니다. 읽을 땐 0x55aa라고 읽죠. 

따라서 위에 예에서 빅엔디안으로 저장되는 시스템에서는 눈에 보이는 그대로 0xf0f0 읽으면 되지만, 
리틀엔디안으로 저장되는 시스템에서는 순서를 1byte단위로 거꾸로 읽어야 합니다. 
쉽게 생각해서 거꾸로 읽는다고 생각하는 것이지, 사실은 이렇게 생각하셔야 정확합니다.



리틀엔디안 시스템에 0x123456  이 저장되어 있으면 역으로 읽는다고 생각해서 0x563412 이렇게 하는것이 아니라, 리틀엔디안의 구조에 저장될 때 높은 승수의 값들은(56)은 뒤에 있는데 읽을 땐 앞에 있는게 큰 수입니다
그냥 역으로 읽지말고 배치가 이렇게 된다는 걸 알아둡시다.




마찬가지로 이렇게 배치됩니다
리틀엔디안을 사용하는 시스템에 저장된 0x12345678 은 읽을때 0x78563412 라고 표시하게되는입니다.
 




'Forensic & 침해사고대응' 카테고리의 다른 글

컴퓨터 부팅 프로세서  (0) 2011.08.24
컴퓨터 포렌식을 위한 하드웨어 구성  (0) 2011.08.24
RISC VS CISC  (0) 2011.08.24
[펌] 리틀엔디안 & 빅 엔디안  (0) 2011.08.24
메모리 덤프하기  (0) 2011.08.22
AND



CISC(Complex Instruction Set Computer)
모든 고급언어 문장들에 대해 각각 기계 명령어가 대응되도록 하는것
RISC(Reduced Instruction Set Computer)
CISC의 많은 명령어중 주로 쓰이는것만을 추려서 하드웨어로 구현하는 것


이것이 핵심 개념인데요..

구체적으로 장단점을 따져보겠습니다.

CISC의 단점이자 RISC의 장점은 

CISC의 경우 하드웨어의 회로가 복잡해져서
RISC에 비해 가격이 비싸지고 발열이 많고 전력소모가 많게 됩니다.


CISC는 고급언어의 컴파일러의 번역과정을 간단하게 해줍니다.





X=(A+B)*(C+D)
이러한 기능을 수행하는 코드를 각 머신으로 작성한다고 했을때

(CISC)
ADD R1,A,B   
ADD R2,C,D  
MUL X,R1,R2  

(RISC)
LOAD R1,A    
LOAD R2,B   
LOAD R3,C   
LOAD R4,D    
ADD R1,R1,R2 
ADD R3,R3,R4
MUL R1,R1,R3 
STORE X,R1 

즉, CISC 각각의 명령어는 머신코드는 길지만 전체 프로그램 사이즈는 RISC보다 작습니다. 
따라서 코드를 수행할 때 RISC가 메모리를 더 많이 참조해야 하므로....
[CISC가 RISC보다 빠른 요인이 됩니다.]

CISC는 복잡한 하드웨어를 가지게 되므로 보통 hard wired방식 보다는 microprogram 방식을 사용하게 됩니다.
RISC는 hard wired 방식을 사용할 수 있습니다.
[RISC가 CISC보다 빠른 요인이 됩니다.]

CISC는 레지스터의 양이 많을 필요가 없고 RISC는 레지스터의 양이 많아야 하므로....
(예>함수에 파라미터를 메모리에 저장하는 경우와 레지스터에 저장하는 경우의 차이) 
CISC가 메모리의 access가 많아지게 됩니다. 
[RISC가 CISC보다 빠른 요인이 됩니다.]

RISC머신이 파이프라인구현이 용이하다라고 합니다..
(이 부분은 명령어 길이가 동일하기 때문에.. 그런것인가요?
정확한 이유를 모르겠습니다. 설명부탁드립니다.)
[RISC가 CISC보다 빠른 요인이 됩니다.]

AND

http://regulation.tistory.com/36
 

컴퓨터에서 어떤 크기의 데이터를 메모리에 저장할 때 바이트 단위로 나누어 저장한다. 
그렇다면 2바이트나 4바이트 크기의 데이터는 어떤 바이트 순서로 저장할까?

먼저 본론부터 말하면 CPU 유형에 따라 바이트 저장순서가 달라질 수 있다. 
크게 두 가지로 나뉘는 데 그것이 바로 ‘리틀 엔디안’과 ‘빅 엔디안’ 방식이다.

1. 리틀 엔디안 (Little-Endian)


시작 주소에 하위 바이트부터 기록

( Intel 80x86 (IBM-PC),  DEC VAX,  DEC PDP-11 ) 
주로 SCO 유닉스나 MS 윈도우가 돌아가는 Intel 프로세서 계열 시스템

 -----------------------------------------------------------------------

-----------------------------------------------------------------------


2. 빅 엔디안 (Big-Endian) 


시작 주소에 상위 바이트부터 기록 
( IBM370,  Motorola 68000,  Pyramid )
상용 UNIX가 주로 돌아가는 RISC 프로세서 계열 시스템


-----------------------------------------------------------------------

-----------------------------------------------------------------------


네트웍에서 데이터 전송을 할 때도 이러한 엔디안  방식에 주의해야 한다.
서로 다른 데이터 저장 방식의 시스템끼리 통신하게 되면 전혀 엉뚱한 값을 
주고받기 때문이다. (저장순서가 서로 반대임)

 네트웍 데이터 통신에서는 네트워크 바이트 순서(network byte order, 빅 엔디안)를 
따르도록 데이터의 바이트 순서를 변경해야 한다. 
(TCP/IP, XNS, SNA 규약은 16비트와 32비트 정수에서 빅 엔디안 방식을 사용함)

 클라이언트측 : 네트워크 바이트 순서(빅 엔디안)로 변경하여 전송한다. 
      htonl 같은 함수(host to network)를 이용해서 변경시켜주면 된다.

      data = htonl(data);   // data : 전송할 4바이트 값 
      write(client_sockfd, (void *)&data, sizeof(int));

 서버측 : 받은 값(네트웍 바이트 순서(빅 엔디안))을 자신에게 맞게 변환하여 사용한다. 
        ntohl 같은 함수(network to host)를 이용해서 변경시켜주면 된다.

        printf("%d\n", ntohl(data));   // data : 전송 받은 4바이트 값 
        close(client_sockfd);

 <이상>

 참조 : ‘endian에 대해서, 윤 상배(dreamyun@yahoo.co.kr)’ 등 인터넷 문서 일부


 ---------------------------------------------------------------------------

다음 코드를 이용하여 여러분의 프로그램이 수행될 시스템의
Endian(바이트정렬) 정보를 알 수 있습니다.
 
int x = 1;
 
if (*(char *)&x == 1) {
  /* Little-Endian */
  /* printf("Little-Endian\n"); */
}
else {
  /* Big-Endian  */
  /* printf("Big-Endian\n"); */
}
 
 
참조 : C Programming FAQs, By Steve Summit, January/1/2001

'Forensic & 침해사고대응' 카테고리의 다른 글

리틀엔디안 빅엔디안 내부 원리  (0) 2011.08.24
RISC VS CISC  (0) 2011.08.24
메모리 덤프하기  (0) 2011.08.22
[ 도구 ] 사용되는 도구들 몇가지  (0) 2011.08.22
[ 도구 ] WinAudit  (0) 2011.08.22
AND

메모리 덤프는 다음과 같이 두가지로 볼 수 있다. 


1. 특정 프로세스에 해당하는 영역만 덤프하기 
:     1. mempass.exe 실행하고 종료말고 작업관리자에서 memepass.exe올라와있나확인
2. pmdump(http://www.ntsecurity.nu/toolbox/pmdump/) 다운
3. pmdump -list 로 pid확인후 pmdum pid outfilename 로 덤프
 
2. 전체 메모리 영역을 덤프하기 
: Nighilant32 로 뜰 수 있다. 

'Forensic & 침해사고대응' 카테고리의 다른 글

RISC VS CISC  (0) 2011.08.24
[펌] 리틀엔디안 & 빅 엔디안  (0) 2011.08.24
[ 도구 ] 사용되는 도구들 몇가지  (0) 2011.08.22
[ 도구 ] WinAudit  (0) 2011.08.22
[ 도구 ] COFFEE 1.2  (0) 2011.08.22
AND

F.I.R.E : 옛날에 사용되던 툴로서 운영체제 별 스크립트를 보유하며, ( \win32\fred.bat, \win32\fred-nc.bat,  \starbins\...)



Hellix (유료화 좋긴하다)
Cain, deft : 우분투 기반 라이브시디
OrionliveCD : 백트랙처럼 방대한 양의 툴 보유하고있다. ( 최신버전 나왔다)

sift 

'Forensic & 침해사고대응' 카테고리의 다른 글

[펌] 리틀엔디안 & 빅 엔디안  (0) 2011.08.24
메모리 덤프하기  (0) 2011.08.22
[ 도구 ] WinAudit  (0) 2011.08.22
[ 도구 ] COFFEE 1.2  (0) 2011.08.22
포렌식과 침해사고 대응의 차이점  (0) 2011.08.22
AND

이전에 사용한 COFFEE보다 더 많은 기능 더 넓은 범위로 해당 윈도우를 조사해 준다. 

라이브 시디 형태로 사용해야한다. (무식하게 조사대상 컴퓨터에 설치하지말고)

 
AND


윈도우용 툴로서 

수사관이 프로그램 프로그램 실행시 USB에 어떠한 명령어를 복사할지 결정하게 되고 어떠한 옵션이 사용되어 명령어가 수행될지 결정하게 된다.  

수사대상 컴퓨터에 USB를 넣으면 USB안에 날짜시간과 컴퓨터 이름으로 된 디렉토리가 생성되게 되고 그 안에 수사 대상컴퓨터의 여러정보( 수사관이 위에서 저장한 명령어와 옵션을 수행한 결과)를  raw 파일 형태로 저장하게 된다

수사관은 자신의 컴퓨터에 USB를 넣고 .( 이때!! 자동실행기능은 꺼져있어야 하며 백신도 동작하고 있어야한다. )
USB안에 존재하는 COFFEE프로그램이
아닌! 수사관 컴퓨터에 깔려있는 COFFEE를 실행시켜 리포트 기능을 활용하여 XML형태로 저장한다. 


 
AND

포렌직은 실력있는사람이 자격증을 가지고 검증된 툴을가지고 사용해야 포렌직
침해사고 대응은 관리자가 하는것

'Forensic & 침해사고대응' 카테고리의 다른 글

[펌] 리틀엔디안 & 빅 엔디안  (0) 2011.08.24
메모리 덤프하기  (0) 2011.08.22
[ 도구 ] 사용되는 도구들 몇가지  (0) 2011.08.22
[ 도구 ] WinAudit  (0) 2011.08.22
[ 도구 ] COFFEE 1.2  (0) 2011.08.22
AND