본문 바로가기

사이버보안 3학년 1학기/운영체제 보안

운영체제보안 중간고사 95%

생각보다 정리한 것중에서 많이 안 나왔다...;;

과제로 제출한 것 중에서 포렌식하는 문제가 나왔고

mimikatz의 SSP 기능 5가지, 그리고 다른 분야에서 SSP 기능..

윈도우 크래킹 기법중 딕셔너리랑 브루트포스를 뺀 세가지 이상

FSB 공격이 10문제 중에서 4문제 이었다!

하나는 buf[10] 소스코드 메모리 구조 (맨위에 RET, BUF 이렇게..)

나머지가 페이로드를 작성하고 과정을 설명하는 것이다.

한 문제가 4점인데 %hn을 써서 두개로 분할해서 코드를 작성하는 건데 그 다음을 몰랐다..

어쩔 수 없지. 기말고사를 노린다.


예상문항은 굵은 글씨와 검정색으로 쓰고

필수로 나오는 것은 굵은 글씨와 빨간색으로 작성했습니다.

+문제로 나오거나 비슷한 문제는 보라색으로 칠합니다.



운영체제에 관해서....3문제



[1] 운영체제에 대해서 서술하시오.

사용자가 컴퓨터 시스템을 손쉽게 사용하고, 시스템 자원을 효율적으로 관리할 수 있도록 하는 프로그램 집합입니다.


[2] 윈도우 운영체제의 커널에 대해 서술하시오.

커널은 인터럽트 처리, 프로세스/메모리/파일 시스템 관리, 인터페이스 제공등 OS 기본기능을 제공합니다.


[3] NTFS에 대해서 서술하시오.

http://windows.microsoft.com/ko-kr/windows-vista/comparing-ntfs-and-fat-file-systems

윈도우 계열 운영체제의 파일 시스템으로 이전의 FAT 파일 시스템과 다르게 일부 디스크 오류를 자동으로 복구하거나 승인된 사용자만 접근이 가능하는 기능이 있습니다.


[4] 윈도우 운영체제의 컴퓨터 부팅 순서를 나열하시오.

http://forensic-proof.com/archives/178

Power on - Load rom BIOS - Pre POST - Run POST - Load CMOS - Load MBR - Run Window Boot Manager

 - Run Winload.exe


[5] 유닉스/리눅스의 Shell

응용 프로그램에서 명령을 받아 커널에 전송하는 인터페이스 역할을 수행합니다. 종류로는 Bourne 셸, korn 셸, C 셸등이 있습니다.


[6] 유닉스/리눅스 운영체제의 컴퓨터 부팅 순서를 나열하시오.

https://www.linux.co.kr/linux/tip/boot_sequence/

Power on - Load rom BIOS - Pre POST - Run Boot loader - Run init level

/etc/inittab에 존재하는 Run level은 아래와 같습니다.

level 0, 시스템 종료

level 1, 단일 사용자 모드(관리자)

level 2, 네트워크가 없는 다중 사용자 모드

level 3, 셸 기반의 다중 사용자 모드

level 4, 없음

level 5, GUI를 지원하는 다중 사용자 모드

level 6, 시스템 재부팅



[7] 휴지통에 SID가 사용되는 이유를 설명하시오.

http://forensic-proof.com/archives/288

파티션 간에 이동없이 지우는 시간을 단축할 수 있고 사용자별로 고유한 SID를 가지고 삭제한 파일을 관리할 수 있습니다.


패스워드 크래킹......3문제



[1] SAM 하이브 파일로 부터 사용자 암호 해시 획득 후 Password Cracking 도구로 해시를 크랙하는 것은?

SAM Cracking 입니다.


[2] 바이너리 파일에서 액티브디렉토리에 접근가능한 모든 정보를 포함하고 있는 파일은?

NTDS.DIT 파일입니다.


[3] Windows NTLM 인증 요소에서 로그인 입출력을 감시하는 로그인 프로세스는?

WINLOGON.EXE


[4] Windows NTLM 인증 요소에서 로컬 시스템 보안 정책과 사용자 인증을 관리하며 로그인 세션유지를 하는 이것은?

LSASS.EXE


[5] Windows NTLM 인증 요소에서 실제로 사용자 인증을 수행하는 DLL 파일 이름은?

MSV1_0.DLL 파일이며 이것은 로그인 수행 중에 필요한 LsaLogonUser() 함수를 호출합니다.


[6] Single Sign On을 구성하기 위해 필요한 값은?

Credentials 입니다. 이것은 NT hash, LM hash, 사용자이름 등이 들어있습니다.


[7] 공격자가 깨기 쉬운 패스워드의 특징을 세가지 이상 말하시오.

길이가 짧거나 NULL값이 들어있거나 사전에 나오는 단어를 쓰는 경우 깨지기 쉽습니다.

이 외에 사용자 아이디와 관련이 있거나 키보드 자판의 나열식으로 만든 경우도 깨지기 쉽습니다.


[8] 그렇다면 깨기 어려운 패스워드를 만드는 방법을 두가지 이상 말하시오.

특수문자, 영대소문자, 숫자를 포함해 길게 만들거나 해시 알고리즘을 사용합니다.


[9] 우리가 실습했을 때 Windows NT계열의 사용자 비밀번호는 (      )을 사용해서 논리적인 취약점때문에 깨지기 쉬웠다. 빈칸에 들어갈 무엇은?

MiMiKatz



메모리 분석......2문제


[1] 가상 주소에 대해서 서술하시오.

가상 주소는 사용자별로 독자적인 영역을 사용할 수 있지만 가상 주소가 가리키는 물리 주소는 별도로 되어있습니다.


[2] 물리 주소 확장에 대해서 서술하시오.

물리 주소 지정 비트를 32비트에서 36비트로 확장하여 4GB 이상의 물리 메모리를 32비트 운영체제에서 사용가능하도록 만들어주는 프로세서의 기능입니다.


[3] 크래시 덤프를 수정할 수 있는 위치는 어디인가?

HKLM\SYSTEM\CurrentControlSet\Control\CrashControl\CrachDumpEnabled


[4] 크래시 덤프의 데이터인 CrachDumpEnabled의 값은?

0 - 없음

1 - 전체 메모리 덤프 without Windows 7

2 - 커널 메모리 덤프 on Windoows 2003 and 7

3 - 작은 메모리 덤프 on Windows 2000 Pro, XP and Vista

7 - 자동 메모리 덤프 on Windows 8


[5] 메모리 분석에서 리스크 워킹의 오브젝트 검색

PsActiveProcessHead: 더블 링크드리스트를 이용해 빠르게 검색

CSRSS: 모든 동작 프로세스 핸들 관리

PspCidTable: 프로세스와 쓰레드의 핸들 테이블

Sessions (SessionProcessLinks member): 모든 윈도우 세션 프로세스 목록 표시

Handles: 모든 핸들테이블과 각각의 소유 프로세스 표시


[6] 메모리 분석에서 패턴 매칭의 오브젝트 검색

프로세스 구조체 패턴을 이용해 메모리 영역을 전체 검색합니다.


포맷 스트링 버그.....5문제



(보기) 문항 1~3번에 해당합니다.

buf[10] 에 Hello 를 입력했을 경우 프로그램을 디버깅하면

\n o l l

 e  h ? ?

위와 같이 들어있는 것을 볼 수 있습니다.

문항의 질문에 맞게 답하세요.


[1] buf[10] 에 Hello를 입력했을 때 맨밑부터 문자가 들어가는 이유를 설명하시오.

이유는 윗쪽이 낮은 주소이고 아래쪽이 높은 주소이기 때문에 높은 주소부터 차례대로 들어가게 됩니다.


[2] e h 앞에는 왜 ? ?가 들어있는지 설명하시오.

buf에 총 10바이트를 입력할 수 있기 때문에 hello가 그 10바이트에 해당하는데

메모리의 주소에 16진수로 선형 형식으로 4바이트씩 저장되어  \n 문자가 1바이트이면

결국 1바이트가 남기때문에 쓰레기 값으로 채워지는 것입니다.


[3] hello가 왜 olleH로 저장되는지 설명하시오.

리틀 앤디언방식으로 상위 데이터가 뒤쪽을 차지하고 하위 데이터가 앞쪽을 차지합니다.

(더 자세한 사항은 여기 참고)


[4] c언어로 작성한 프로그램을 컴파일해서 실행할 때마다 buf의 주소가 달라지는 이유를 설명하시오.

그 이유는 gdb에서 실행할 때마다 환경변수 값(LINES 또는 COLUMNS)에 의해 buf의 메모리 주소가 달라집니다. 

[다른답변] gdb에서 환경변수를 설정하는 ASLR 때문에 메모리 주소가 바뀐다.


[5] 실제 프로그램 실행 결과의 buf 주소와 gdb에서 확인한 buf 주소가 다른 이유가 무엇인지 설명하시오.

실제 프로그램 실행시에는 절대 주소로 실행되지만 gdb에서는 상대주소로 실행되기때문에 주소가 다릅니다.


[6] RET 주소를 변경하기 어려울 때 사용하며 메인프로그램이 종료된 후 호출되는 이것은?

.Dtors

이에대해 자세한건 http://bluehatsecurity.tistory.com/152 에서 조금 더 보는 것이 좋다.


[7] _di_fini 가 무엇입니까?



그외..

[1] MDR에 대해 설명하시오.

물리적이며 디스크의 첫번째 섹터 512바이트를 가지고 있으며 내부에 invaild partition와 같은 문구가 떠있고 55AA 시그니처를 가지고 있습니다.


[2] VBR에 대해 설명하시오.

논리적이며 볼륨의 첫번째 섹터 512바이트를 가지고 있고 파일 시스템의 시그니처가 포함되어 있습니다.

부트 매니저 호출과 disk error와 같은 메세지를 가지고있고 55AA 시그니처를 가지고 있습니다.


[3] 프리패치

실행한 프로그램 이름 + - + 경로 + .pf

예) BANDIZIP-A324CFE.pf

실행 파일이 사용하는 시스템 자원을 미리 저장하였다가 윈도우 부팅 시 프리패치 파일(.pf)을 모두 메모리에 로드한 후 실제 사용할 때에는 메모리 매핑만을 수행하여 사용할 수 있도록 하여 실행 속도를 다소 향상시켰다. (출처: 포터블 포렌식, 블로그스팟)


3년1학기 중간고사.txt









'사이버보안 3학년 1학기 > 운영체제 보안' 카테고리의 다른 글

ubuntu gdb peda 사용  (1) 2016.05.02