분류 전체보기359

[논문요약] 악성코드 정적탐지를 위한 PE의 Rich헤더 활용방법 악성코드를 정적으로 탐지하는 방법을 연구하는 과정에서 https://www.zdnet.co.kr/view/?no=20180309104954 "평창올림픽 해킹, 러시아-북한 소행 아니다" 평창동계올림픽 개막 직후 러시아와 북한 해커들이 IT 시스템 해킹을 시도했다는 소식 때문에 한바탕 소동이 벌어졌다.​하지만 당시 올림픽 시스템 해킹을 시도한 것은 이들이 아닌 것으로 드러났다.Ȁ... www.zdnet.co.kr 위와 같은 기사를 보았고 Rich헤더가 조작되었다고 말했습니다. 모든 기사를 100%신뢰할 수는 없지만 연구하는데 있어서 Rich헤더를 변조하면 다른사람으로 위장할 수 있다는 내용이 담겨 있네요. 그렇다면 Rich헤더는 무엇일까요? Rich헤더란? (리치헤더란?) 비정형 데이터구조를 가지고 있으며.. 2019. 9. 4.
[FTZ]level4 어느덧 4번째네요. 와... backdoor라는 어마무시한 것을 /etc/xinetd.d에 꼼쳐놨네요..? 뉴규야!! 시작해 봅시다. 먼저 xinetd가 무엇일까요? 인터넷 슈퍼 데몬이라고 부르고 서비스를 관리해주는 프로그램이라고 읽습니다. 보통 Standalone방식으로 자신이 직접 서비스를 관리할 수도 있지만 항상 메모리에 상주해 있으므로 속도는 빠르지만 시스템에 부하를 줄 가능성이 있지요. 그래서 xinetd를 사용합니다. 조금 풀어서 설명하면 여러분들은 시골에서 장사할 때 사람이 하루에 한 두명 올까말까하는데.. 24시간 대기하려면 어떨까요? [Standalone방식] 이런 비효율이 따로 없지요. 그래서 과일가게, 야채가게, 슈퍼마켓 등에서 통합적으로 손님이 오면 문자가 오도록 설정해 놓으면 좋겠.. 2019. 9. 4.
[FTZ]level3 아직도 3살.. 걸음마 떼기도 힘드네요. 20살이 되려면... 시작해 볼까요? 먼저 C소스에 대한 설명부터 볼까요? 10라인 : 인자를 1개 입력해주어야 합니다. 16라인부터 strcpy, strcat, system을 한 번에 적어보면 system("dig @ 'argv[1]' version.bind chaos txt"); 이렇게 되네요? 저는 dig를 몰라서 검색해보니 도메인네임서버에 대한 질의응답이 가능한지 확인하는 명령어라네요. 아래 힌트를 볼까요? WoW!! 힌트가 2개나 있네요? 1) 리눅스에서 다중명령어를 사용하기 위한 방법은? 1. 세미콜론 ls; pwd; 위와 같이 명령어 2개를 동시에 실행이 가능합니다. 웹에서 보통 command injection할 때 주소창이나 검색창이 1줄밖에 되지 .. 2019. 9. 3.
[FTZ]level2 level2계정으로 접속을 했으면 확인을 해봅시다. 텍스트 파일 편집기라... Windows 사용자가 메모장을 알고있다면 Linux 사용자는 vi나 gedit정도는 알고 있겠죠? shell을 실행시킬 수 있다..? 그러면 level1과 동일하게 SetUID가 적용된 편집기에서 shell을 실행시키면 level3의 권한으로 실행되겠네요!!! 벌써 다 푼 것 같지만 찾았으면 열어봅시다. 누가봐도 vi editor네요?? 아 맞다 vi editor의 명령모드에서 shell로 잠시 빠져나갈 수 있죠? :sh 실행해 줍시다. 참고로 :!id와 같이 느낌표를 치고 명령어를 실행할 수 도 있습니다. editor이 답답한지 터미널에 바람쎄러 나왔습니다. 나는 누구일까요? level3입니다. 그 전에 우리가 아는 vim.. 2019. 9. 3.
[FTZ] level1 시작해볼까요? ID : level1, PW : level1로 접속을 합니다. 접속하자마자 어떤파일이 있는지 확인합니다. 궁금증을 유발하는 hint파일이 있네요? 궁금하니 열어봅니다. level2 권한에 setuid가 걸린 파일을 찾는다?? SetUID란? 다른 사용자가 파일을 실행시켰을 경우 실행되는 동안에는 파일의 소유자 권한으로 실행됩니다. 접근권한에서 4000을 사용합니다. 파일을 찾아볼까요? find 명령어 1) -name 옵션 ▶ 파일의 이름으로 검색 2) -type 옵션 ▶ 파일의 타입으로 검색 3) -user 옵션 ▶ 사용자가 소유한 모든 파일을 검색 4) -perm 옵션 ▶ 지정한 접근권한과 일치하는 파일 검색 여기서 사용한 명령어는? $ find / -user level1 -perm +4.. 2019. 9. 3.
[운영제체 취약점 이해 및 대응]윈도우 시스템의 이해 및 보안 운영체제를 업데이트 해주지 않는다면? KISA에서는 상위버전의 윈도우를 사용하라고 권장합니다. 그러면 바로 서비스 종료된 OS를 안 쓸 수 있을까요? 수십억을 들여서 Windows7에서 만들어놨는데 Windows10으로 변경할 수 없겠죠? 변경했을 때 솔루션이 운영체제랑 충돌할 수도 있구요. 지하철에서 쓰는 프로그램만 해도 현재 XP를 사용하는 경우도 있습니다. 종료된 OS에 대한 취약점은 전부 제로데이겠죠? 1) 윈도우 아키텍처 ▶ 윈도우 시스템은 크게 사용자 모드 (User mode)와 커널 모드(Kernel mode)로 구분됩니다. ▶ 운영체제의 중심에 Kernel이 위치합니다. ▶ Kernel은 인터럽트(Interupt) 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리 등 운영체제의 기본 .. 2019. 9. 2.
[운영체제 취약점 이해 및 대응] 취약점에 대한 이해 2. 취약점에 대한 이해 1) 취약점과 익스플로잇 [1] 취약점 : Vulnerability ▶ 취약점이란 사용자에게 허용된 권한 이상의 동작이나 정보 열람을 가능하게 하는 설 계상의 허점이나 결함을 말함. ▶ 취약점이 발생하는 이유: 프로그램은 사람이 만드는데, 개발자가 프로그램 개발 시 실 수를 하기 때문. 수백, 수천 명 이상이 검토하고 검토한 윈도우 및 리눅스도 여전히 취 약점이 발견되고 있음 ▶ 취약점을 연구하는 목적: 판매, 명예와 공부(돈벌려고), 불법적인 행위(돈벌려고), 군사적인 목적(돈벌려고) [2] 익스플로잇 : Exploit ▶ 일반적으로 취약점이 발견되면 해당 취약점을 공격하여 원하는 코드를 실행하거나 특 정 목적을 달성하는 공격코드 또한 개발됨. 이런 공격코드를 Exploit(익.. 2019. 9. 1.
악성코드 분석[4] x86 아키텍처에서 EIP는 instruction pointer나 program counter로 알려져있습니다. 즉, 프로그램에서 수행할 다음 명령어의 메모리 주소를 담고있는 레지스터입니다. 만약 이 EIP가 손상된다면 어떻게 될까요? EIP가 손상되었다는 말은 정상프로그램 코드가 아닌 곳의 메모리 주소를 가리킨다는 말이겠죠? ▶ CPU는 실행할 정상 코드를 가지고 오지 못하므로 실행 중인 프로그램은 종료될 것입니다. ▶ EIP를 제어할 때 CPU의 실행을 제어할 수 있습니다. ▶ 바로 공격자가 EIP타겟팅 하는 이유도 CPU의 제어권을 갖기 위해서이지요. ▶ 그래서 메모리상에서 자신이 실행하고자 하는 코드를 EIP가 가리키도록 합니다.!! mov와 lea명령어의 차이를 아시나요? "mov는 값을 옮기고.. 2019. 9. 1.
악성코드 분석[3] 1. 잠재적인 악성코드를 어떻게 찾을 수 있을까요? ▶ 특정 함수를 연달아 호출하거나 DLL injection등과 같이 사용하는 함수가 정해져있다면 악성코드일 확률이 높겠지요. ▶ 결국 프로그램 기능에 대한 힌트를 줄 수 있는 함수를 찾는 것이 중요합니다. 일반적으로 프로그램이 사용하는 공통 DLL을 알아봅시다. DLL Description Kernel32.dll 메모리, 파일, 하드웨어 접근 Advapi32.dll 서비스관리자, 레지스트리 등의 컴포넌트 User32.dll 버튼, 스크롤바, 인터페이스 등의 컴포넌트 GDI32.dll 그래픽 보기, 조작 Ntdll.dll 윈도우 커널 인터페이스 직접 import가 불가능하며 Kernel32.dll을 통해 import WSock32.dll Ws2_32.dl.. 2019. 8. 30.
자료의 요약 단어가 데이터다. 클릭이 데이터다. 링크가 데이터다. 오타가 데이터다. 꿈속에 나온 바나나가 데이터다. 어조가 데이터다. 쌕쌕거리는 숨소리가 데이터다. 심장박동이 데이터다. 비장의 크기가 데이터다. 검색어는 가장 계시적인 데이터다. 사진 역시 데이터로서의 모습을 드러냈다. - 모두 거짓말을 한다 - ▶ 커플들의 싸움을 일으키는 76%의 원인이 사소한 습관 때문이라고 합니다. ▶ 만약 당신이 "내 친구의 남자친구는 그렇지 않더라"는 발언으로 비교 평가하려 한다면 그 말을 잠자코 듣고 있던 당신 남자친구의 87%는 자괴감에 밤잠을 설칠 것이라고 합니다. ▶ 물론 그들 중 30%는 화를 내기도 합니다. ▶ 한번 헤어졌던 연인과 관계회복을 꿈꿨던 사람은 무려 82%에 달합니다. ▶ 헤어졌다가 다시 만난 커플의 .. 2019. 8. 30.
[운영체제 취약점 이해 및 대응] 운영체제에 대한 이해 1. 운영체제에 대한 이해 1) 운영체제 [1] 컴퓨터 시스템을 손쉽게 사용하도록 하고, 시스템 자원 (메모리, 프로세서, 입출력 장치, 정보, 네트워크 등)을 효율적으로 관리할 수 있도록 하는 프로그램의 집합입니다. [2] 악성코드는 운영체제의 취약점을 이용해서 공격할 수도 있습니다. 2) 운영체제 기능 [1] UCI = User Command Interface(사용자 명령 인터페이스) [2]메모리 관리 (Memory Management) ▶ 프로그램을 실행할 때 프로그램 코드와 데이터를 저장하고 처리하기 위한 메모리 필요 ▶ 프로그램의 메모리 요청에 대한 적합성 검증하고 메모리를 할당 ▶ 할당된 메모리를 다른 프로그램이 접근하지 못하게 관리하고 보호, 사용 종료 후 회수 ▶ 운영체제/시스템 해킹 할 .. 2019. 8. 29.
악성코드 분석[2] 악성코드는 패킹과 난독화 기법을 사용합니다. 패킹은 압축돼서 분석할 수 없도록 난독화된 것을 말합니다. 난독화는 바이너리에 대한 은폐한 것을 의미하죠. 패킹되고 난독화 된 코드는 적어도 LoadLibrary()와 GetProcAddress()함수를 포함해요. 이 함수들은 추가함수를 로딩해 접근할 때 사용합니다. PE파일은 코드에 대한 정보, 애플리케이션의 유형, 필요한 라이브러리 함수, 메모리 공간 요구사항 등을 포함한 헤더로 시작합니다. 그러므로 악성코드 분석가에게 PE헤더는 가치있는 포장지같은 느낌이겠죠? 라이브러리 링크에 대해 볼까요? import하는 함수 목록은 실행파일에서 수집할 수 있는 유용한 정보입니다. import는 실제로 다른 프로그램에 저장되어 있지만 외부프로그램이 사용할 수 있도록 한.. 2019. 8. 28.