다행이 리버싱에 대한 많은 질문을 받았지만 많은 부분 제대로 답변을 드리지 못한 부분이 많았다.
처음 질문은 EP에 대해서 물어보신것 같다. 그런데 컴퓨터로 하다보니 긴장해서 제대로 못알아 들어서 답변을 드리지 못했다.. EP를 OTP라고 들은 내잘못이 크다.
정답은 OEP였다. OEP에 대한 내용은 오늘 공부하는 부분에서 나오는 내용이다.ㅠㅠ
EP: Entery point : 는 파일이 메모리에 로드되어 파일 작성자가 짜 놓은 코드의 처음부분을 말한다.
EP에 대한 내용은 PE파일 헤더에도 영향을 미치는 부분이다. NT헤더의 Optional 헤더의 Address od Entry Point 값(RVA)값으로 확인이 가능하다.
Image File Header : NT 헤더의 IMGE_NT_HEADERS의 멤버중 FileHeader의 구조체 IMAGE_FILE_HEADER로 파일의 개략적인 속성을 나타낸다.
특히 IMAGE_FILE_HEADER에서 4가지 멤버를 알아야한다.
1: Machine: 2 byte : CPU의 고유넘버
2: NumberOfSections: 2 byte: 섹션의 개수 (이 값은 반드시 0보다 커야한다.)
3: SizeOfOptionalHeader: 2 byte: IMAGE_FILE_HEADERS 구조체의 마지막멤버 IMAGE_OPTIONAL_HEADER3의 크기를 나타낸다. 만약 x64의 환경의 경우 크기가 다르기 때문에 IMAGE_OPTIONAL_HEADER64를 사용합니다.
4: Characteristics: 2byte: 파일의 속성값을 나타내는 값이다.
매번 PE파일에더에서 이헤더는 무슨 역활을 하고 어느 섹션은 어떤 역활을 하는 지 물어보신다. 내가 생각하기에 PE파일의 내용은 너무 방대하지만 기본적은 몇가지 헤더의 속성은 외우는 것 같다는 느낌을 받았다.
다음은 JMP와 CALL에 대한 질문이 었다.
이부분에서는 짬을 이용해서 답을 했고 다행이도 근처에 도달한것 같았다.
JMP는 무조건 위치로 이동하는것이고,
CALL의 경우 스택의 현재위치를 저장하고 점프를 한다. CALL위치에서 RET를 실행하면 CALL한 위치로 돌아가게 된다.
이때 CALL을 하게 되면 스택에 함수의 위치를 저장하고 RET을 만나게 되면 스택의 주소를 EIP레지스터리에 넣고 EIP레지스터 값을 이동을 하게 된다.
엄청 모르겠습니다. 나름 일년을 해킹에 맨땅에 해딩하면서 공부했는데 아는 내용이 너무 적어서 슬펐습니다.
정보보안 학과로 편입을 생각도 했습니다만... 마땅히 마음에 들거나 갈 수 있는 대학교가 한정적이었습니다....
그래도 작년에 비해서 엄청 늘어나서 아쉽다는 생각을 했습니다... 올해 수험생분들은 꼭 상행지원 해보세요.,...
오늘 공부한 내용은... 많이 없습니다. 우선 답지를 통해서 2~3번 풀어보고 공부하라는 블로그를 읽어서 해보았습니다.
시스템 보안
*서버사이드언어
웹 서비스를 백엔드와 프론트엔드로 구분했을떄, 백엔드에서 서버의 동작을 정의하기 위한 언어
스크립트 언어, 마크업 언어를 제외한 대부분의 언어는 서버 사이드 언어이다.
주요언어 : PHP, ASP, JSP, C, PYTHON
제외언어: HTML, JAVAscript, CSS
웹 프로그래밍에서 프론트 엔드는 웹 디자인을 담당하는 HTML, CSS, javascript 웹서버와 연결되는 벡엔드 언어 로 PHP,PY 등이 있다.
*멜트다운 공격
CPU취약점으로, 유저 영역프로그램이 운영체제 권한 영역의 프로그램의 내용을 볼 수 있는 치명적인 취약점이다.
- 운영체제 권한 영역이 노출이 되면서 메모리상의 거의 모든 정보가 유출될 수 있다.
- 모든 CPU에 해당이 된다.
발생원인 : 추측실행 , 비순차적 명령어 처리
공격대상 : 시스템만 접근 가능한 커널의 메모리 데이터
부채널 공격의 일종이다.
부채널 공격에는 멜트다운과 스펙터가 존재한다.
멜트다운과 스펙터 모두 하드웨어를 대상으로 한 공격이다.
커널에서 관리하는 메모리영역에 접근할 수 있다.
CPU성능을 높이기 위한 메커니즘을 악용하는 취약점이다.
* 리눅스 시스템
시스템의 주요설정 파일이 위치한 디렉토리 + 환경설정 파일이 모여있음 = /etc
임시파일을 저장하는 디렉토리 + 임시저장 디렉토리 + 모든 사용자에게 열려있다. = /tmp
물리적 장치가 파일화되어 저장되 디렉토리 = /dev
햇갈리는 명령어
/bin = 실행파일 모음, 일반적으로 사용하는 mv, cat등 명령어 프로그램이 있다.
/root = root계정의 홈 디렉토리
/usr = 주로 새로 설치되는 프로그램들이 저장된다.
/mnt = CD-ROM, 네트워크 파일 시스템등을 마운트 할때 사용하는 디렉터리
몰랐던 디렉토리
/boot = 부팅과 관련된 파일들이 있다.
/sbin = 주로 시스탬관리자가 쓰는 시스템 관련 명령어 프로그램들이 모여있다.
잊어먹은 디렉토리
/var = 시스템 로그, 스폴링 파일들이 저장된다. 메일서버로 운영될 경우 메일이 여기 저장된다.
*윈도우 사용자 그룹
원도우 기본 사용자
administrator : 관리자 권한으로 가장 강력한 권한을 가지고 있다.
local system : 로컬에서 관리자와 거의 대등한 강력한 권한을 갖는다. 원격에서 접속이 불가능 하다.
guest : 매주 제한적인 권한을 가진 계정으로, 기본 설정으로는 가용이 불가능하다.
윈도우 기본 그룹
administrator : 도메인 지원이나 로컬 컴퓨터에 대한 모든 권한이 존재하는 그룹
account operators : 사용자나 그룹 계정을 관리하는 그룹
backup operators : 시스템 백업을 위해서 모든 시스템의 파일과 디렉터리에 접근할 수 있는 그룹
guests : 도메인을 사용할 수 있는 권한이 제한된 그룹/ 시스템의 설정 변경 권한이 없도록 조치된 그룹
print operators: 도메인 프린터에 접근할 수 있는 그룹
power users : 디렉터리나 네트워크를 공유할수 있고 공용 프로그램 그룹을 만들수 있다./ 컴퓨터의 표준 시간을 조정 할수 있다.
replicator : 도메인에 있는 파일을 복제할 수 있는 권한을 가지고 있는 그룹/ 디렉터리 복사 서비스를 사용하는데 이용된다.
server operators: 도메인 서버를 관리할수 있는 그룹/ 로컬 로그인과 시스템 재시작, 시스템 종료등을 할수 있는 권한이다.
users: 도메인과 로컬 컴퓨터를 일반적으로 사용하는 그룹/ 개개인에 할당된 사용자 환경을 직접 만들수 있지만 설정할 수 있는 항목에는 한계가 있다./ 시스템 서비스를 시작하거나 종료할수 있는 권한이 존재하지 않고 디렉터리 공유 설정을 할 수 없다.
문제> 윈도우에서 사용자 계정을 추가하면 일반 사용자 그룹인 user 그룹에 자동 포함된다. 이 user 그룹의 권한에 대한 설명으로 옳지 못한것은?
1. user은 워크스테이션을 종료할 수 있고 서버에도 종료 명령을 내릴수 있다.
?=> server operators 부터 로컬 종료가 가능하다.
2. user가 로컬 그룹을 만들수 있지만 자신이 만든 로컬 그룹만 관리한다.
=>
3. 관리자가 설치하거나 배포한 인증된 windows 프로그램을 실행할 수 있다.
=>
4. user 그룹의 구성원은 자신의 모든 데이터 파일 및 레지스터리에서 자신의 부분을 완전히 제어할 수 있다.
=>
*윈도우 루트 키
==
나름 리버싱와 PE라일구조와 레지스터 많이 공부했는데 윈도우 환경에서도 이렇게 배울것이 산처럼 낳다는 것을 알고 놀랐다. 점점 꿈이 구체화 되면서 그 분야에 파고 들고 싶은데... 정보가 부족하다... 멘토가 있었으면 좋겠다.... 현재 멘토님은 너무 바빠서 연락을...읍읍...
면접에서는 분명 제가 중요하다고 생각이 되어서 책에 메모를 해둔 부분도 나왔지만 재대로 대답을 하지 못했습니다..
하지만 가장 아쉬운것은 윤리관또한 중요하지만 기술력도 중요하다라는 질문에 조금 부족한 답을 한것이 가장 아쉬움이 남습니다.
저가 교육원에 지원을 하게 된 결정적인 동기는 사이버 공간에서 피해를 받는 사람들을 도아줄수 있는 기술을 배우기 위함이 었습니다. 매일 저는 인생의 원칙중에 3번째 원칙 나의 능력을 정의와 평화를 위해 사용한다.를 생각하고 모든 공부에 임하고 정의와 진정한 평화에 대해서 고민하지만 능력을 올리기 위해서 노력하는 점을 제대로 어필하지 않아서 매우 아쉬움이 남습니다.
이번 BOB 지원은 특히 면접과 시험은 저에게 많은 영향을 주었습니다. 다양한 환경에서 다양한 방법으로 문제를 파악하고 툴이 없다면 직접 툴을 만드는 불가능을 가능을 바꾸는 공학도의 마음등등 생각나는것이 너무많았습니다.