전체 글

전체 글

    CVE-2017-11882 분석

    1.취약점 Info Microsoft Office 소프트웨어가 메모리의 개체를 제대로 처리하지 못하는 경우 발생하는 취약점이다. MS오피스에 포함된 수식 편집기 프로그램, 즉 EQNEDT32.EXE 관련 취약점으로, 각각 2017년 11월에 공개되었다. 이들은 모두 메모리 손상 취약점(Memory Corruption Vulnerability)으로, EQNEDT32.EXE가 메모리상에서 특정 오브젝트를 적절하게 처리하지 못하는 과정에서 발생한다. MS는 CVE-2017-11882 취약점 해결을 위한 보안 패치를 발표했으나, 결과적으로 또 다른 취약점인 CVE-2018-0802가 존재하게 되었다. 이로 인해 MS는 자사 오피스 패키지에서 EQNEDT32.EXE를 제외하기에 이르렀다. 2.취약점 Target ..

    [Info Stealer] Lokibot - PO NO 5532.bin 분석

    1.SandBox분석 먼저 SandBox 분석 결과를 확인해보자. 1개의 http Post request가 확인된다. 현재 C&C서버가 죽어 있는 상태이므로 response는 확인되지 않는다. Process 정보를 보면 아래와 같다. 현재 분석대상파일인 po no5532.bin이 실행되면 다시한번 po no5532.bin이 실행되는 것을 확인할 수 있다. 먼저 앞서서 실행되는 po no5532.bin process의 상세 정보를 확인해보자. 해당 프로세스에서 "C:\Users\admin\AppData\Local\Temp 경로의 PO NO5532.bin.exe 파일을 실행하는 것을 확인할 수 있다. 해당 process가 load하는 다음 PO NO5532.bin.exe process의 정보도 확인해 보자...

    Exploit writing tutorial part2 : how to jmp shellcode

    Exploit writing tutorial part2 : how to jmp shellcode 이번 문서에서는 앞서 stack based overflow에서 jmp esp를 사용해 공격자가 원하는 곳으로 프로그램의 흐름을 제어하였다. 이러한 방법이외에도 다양한 방법들이 존재하며 앞서 작성한 exploit을 수정하며 다양한 방법을 알아 볼 것이다. 1. CALL [register] 만약 레지스터에 shellcode를 가르키는 주소가 로드된 경우 해당 register를 단순히 CALL하면 된다. 예를 들면 Esp가 shellcode를 가르키고 있다면 CALL esp를 통해 shellcode를 실행 시킬 수 있다. Kernal32.dll이 많은 CALL [register]를 가지고 있으므로 꽤나 공격가능한 ..

    Exploit writing tutorial part3 : SEH base exploit

    앞서 shellcode로 점프할 수 있는 여러 방법에 대해서 알아보았다. 이번에는 조금 특별한 방법인 SEH기반의 오버 플로우 공격을 알아볼 것이다. 먼저 예외 핸들러에 대해 알아보자. 프로그램이 실행되는 도중 여러 예외가 발생 가능하다. 예를 들면 0으로 나누거나 stack overflow가 발생하는 경우 등이 있을것이다. 이러한 경우 예외 핸들러가 동작하며 해당 예외 발생에 대처한다. 일반적인 예외처리 매커니즘은 아래와 같다. try { //run stuff. If an exception occurs, go to code } catch { // run stuff when exception occurs } 이렇게 핸들러가 추가된 뒤 스택의 구조는 아래와 같다. 윈도우에서는 기본적으로 예외들을 처리할 수..

    IRIS 품종분류 KNN

    목차 IRIS 품종 분류를 위한 data set 로드 data set에 포함된 feature, target, name확인 KNN 알고리즘을 통해 예측과 평가 이번에는 K- Nearest Neighbor(KNN) 알고리즘을 실제로 적용해보기 위해 scikit-learn에서 제공하는 IRIS data set을 이용해 머신러닝 모델을 만든후 예측과 평가를 진행해 볼 것이다. 모든 과정은 google colab에서 진행할 것이다. 먼저 scikit.learn.datasets에서 필요한 load_iris를 import해주고 scikit-learn에서 제공하는 data를 로드해주자. from sklearn.datasets import load_iris iris_dataset = load_iris() 필요한 data..

    [Hack CTF - look at me]

    Execute 문제파일을 실행시키면 hellooooooooooo를 출력해주고 입력을 받는다. Dummy를 일정크기 이상 넣어주면 segmentaion fault가뜨는 것을 확인 할 수 있다. Analyze NX bit가 걸려있고 나머지는 다 풀려있는 것을 확인 할 수 있다. Main getegid함수를 통해 v5변수에 effective group id를 넣어준다. 그리고 setresgid함수를 통해 v5를 인자로 주어 현재 프로세스의 real user id effective user id, saved set-user-id를 설정해준다. 그리고 look at me 함수를 호출한다. Look at me Get 함수가 보이는 것으로 보아 여기서 buffer overflow를 트리거 할 수 있을 것 같다. v1..

    [Pwnable.xyz – Punch it]

    Execute 파일을 실행시켜보면 게임을 할지 안할지 물어보고 게임을 선택하게 된다. 하지만 게임을 선택하면 어떤 이유에서인지 error를 출력하고 프로그램이 종료된다. Analyze Pie RELRO Canary nxbit모두 걸려있다. Main Line 11: motd_seclect_character 함수를 호출한다. Line 12~40 : do while문으로 루프가 걸려있다. 탈출 조건은 v6가 v5보다 큰 경우이다. Line 14~38: while문이 두번 걸려있다. v6에 rand함수를 통해 난수를 넣고 v5변수의 입력값과 동일한경우 y를 입력해주면 buf에 입력을 받는다. v5와 v6가 다른경우에는 두가지로 나뉘는데 v5가 v6보다 큰 경우에는 qword_202070 전역변수를 1증가시키고 ..

    [Hack CTF - RTL_core]

    Execute 문제를 실행시키면 passcode를 입력하라고 한다. 당연히 모르므로 실패가 뜨는 것을 확인 할 수 있다. Analyze 보호기법을 확인해보면 NXbit만 걸려있는 것을 확인 할 수 있다. 문제이름이 RTL인 만큼 해당기법을 사용하지 않을까 싶다. Main Line 8 : s변수에 gets함수를 통해 입력을 받는다. Line 9~13 : if문으로 통과 조건은 check_passcde의 return값이 hashcode와 같은 경우이다. Core 해당함수는 dlsym함수를 통해 prinf함수의 address를 v5에 저장한 이우 해당 값을 leak 해준다. Printf의 address를 기반으로 이후 exploit을 짤 때 참고 하면 될 것 같다. Check_passcode 앞서 확인한 if..