본문 바로가기

전체 글

(137)
02. GandCrab Ransomware V5.0 갠드크랩 랜섬웨어는 V1.0을 시작으로 현재 V5.0.4에 이르기까지 계속해서 업데이트와 함께 한국을 대상으로 유포중에 있다. 아래 그림은 Ahnlab에서 공개한 2018년 3분기 국내 랜섬웨어 유포 비율 현황이다. 갠드크랩 랜섬웨어가 79%를 차지할 만큼 큰 비중을 갖고 있다. [그림 1] 2018년 3분기 랜섬웨어 Top 10 / 출처 : Ahnlab 본 글에서는 그 중 V5.0을 분석한 결과를 포스팅한다. 악성코드 정보는 아래와 같다. 악성코드명 o.exe 악성코드 hash(md5) - 관련 그룹 - 해당 갠드크랩 랜섬웨어를 실행하게 되면 먼저 특정 프로그램(백신 등)이 실행중인지 검사하고, 실행 중이라면 특정 프로그램들을 종료한다.[그림 2] 특정 프로그램이 실행중인지 검사 [그림 3] 특정 프로..
01. USCYBERCOM Malware Alert's APT Malware 지난 11월 9일 미국 사이버 사령부는 바이러스 토탈을 통해 기밀 사항으로 분류되지 않는 악성코드 샘플들을 공개했었다. 그 중 APT(Advanced Persistent Threats) 공격에 사용된 RAT(Remote Access Trojan) 악성코드가 공개되었다. 본 글은 해당 악성코드를 분석한 글이다. 악성코드 정보는 아래와 같다. 악성코드명 ctlnetw.exe 악성코드 hash(sha-256) dea3a99388e9c962de9ea1008ff35bc2dc66f67a911451e7b501183e360bb95e 관련 그룹 sofacy, Russian Group 이 악성코드는 대부분의 함수를 계산을 통해서 불러오고, 또한 네이티브 함수인 것 처럼 모방된 자체 제작 함수를 사용한다. 악성코드가 실행되..
Bash Jail 1 RingZer0team 의 Jail 탈출 문제 1번이다. Bash Jail 1 처음 문제를 보면 아래 사진과 같이 ssh로 접속할 수 있는 주소와 포트번호, 아이디, 비밀번호가 주어진다. 접속하라는 대로 고분고분 접속하게 되면 아래와 같이 배쉬코드라면서 코드를 하나 출력해주고인풋을 받고 내보내고 하는 식으로 되있다고 말해준다. 일단 아무것도 모르는 상태이니, 뭐라도 하나 입력해보면/home/level1/prompt.sh : line 24: input: command not found 라는 안내문(?)이 나온다.나는 input을 입력해주었고, 해당 input을 명령어로 해석하는 모양이다.그렇다면 어쨌든 이 감옥을 빠져나가기 위해서는 쉘을 따내야 한다.그리고 현재 input은 명령어로 받아들여지고있다. 그렇..
09. Anti-Debugging 1. Anti-Debugging? 안티디버깅이란 말 그대로 디버깅을 힘들게 하는 기술을 말한다. 그렇다면 디버깅을 힘들게해서 무엇을 얻어낼 것인가?프로그램의 코드를 올리디버거등의 도구를 이용한 디버깅하는 것을 방해하는 것이다.상용 프로그램에서 사용되며, 악성코드에서 사용되기도 한다. 악성코드에서 사용될 경우, 분석가의 입장에서는 악성코드의 행위를 파악하기 힘들어진다는 점이 존재한다. 따라서, 안티디버깅을 효율적으로 해제하여 악성코드의 악성행위를 파악하는 것이 분석가의 자질로서 필요하다. 안티디버깅의 유형에는 Static 유형과 Dynamic 유형이 존재한다. 2. Static Anti-Debugging Static 안티디버깅의 특징은 프로그램의 첫 실행에서 디버거를 탐지하는 것이다. 그 후에는 더이상 탐..
[RingZer0 CTF] Kernel Introduction Kernel Introduction 문제입니다.문제에 접속하면 바이너리 파일을 다운로드 받을 수 있습니다.바이너리 파일을 다운로드 받아보면 실행파일도 뭐도 아닌걸 알 수 있는데..사실 실행하면 풀리는 문제인거 같습니다..(필자는 그렇게 풀지 않았습니다..) 어쨌든 필자는 아이다로 열어서 살펴봤습니다. 문자열이 박혀있고, 어떤 루틴을 통과합니다.그리고 그 루틴을 모두 통과한 뒤에 연산 결과를 출력해주는 식의 프로그램이더군요. 보기 쉽게 헥스레이로 보면 이런식으로 코드가 표시됩니다.그럼 이 코드를 비슷하게 코딩해서 출력해주면 플래그가 뜨겠군! 이라고 생각할 수 있습니다.문제는 qmemcpy(buffer, &unk_236, sizeof(buffer)); 이 부분이겠네요.버퍼에 무언가 메모리를 복사해 오는데 저..
08. angr 1. angr? 먼저 angr 라는게 뭔지부터 말해보자.뭐 어떤 팀에서 만들어 모듈로 사용한다. 이런식의 말도 할 수 있지만 그런 내용은 블로그 혹은 기사 등에서 잘 찾아볼 수 있으므로 간단하게 얘기하고자한다.(작성자의 실력이 부족한 것도 한 몫한다.)지금까지 사용한 angr에 대한 결론은 복잡한 reversing 문제들 즉, 중첩 if 문이 너무 많거나 switch 문이 너무 많거나 혹은 어떤 조건을 만족시켜야만 풀 수 있는 문제들을 몇 줄의 코드로 손 쉽게 풀 수 있게 도와주는 도구이다. 2. install? 그럼 설치는 어떻게 하는가. 이 또한 다른 블로그 들에 많이 게재되어 있지만 설치 방법을 소개하고자한다. 필자는 리눅스 시스템을 기본으로 설명한다. 먼저,sudo apt-get updateapt..
07. arm 어셈블리어 정리 1. ASL, ASR, LSL, LSR, ROR, ROL ASL : 왼쪽으로 쉬프트 , 빈자리는 부호로 채움ASR : 오른쪽으로 쉬프트 , 빈자리는 부호로 채움LSL : 왼쪽으로 쉬프트 , 빈자리는 0으로 채움LSR : 오른쪽으로 쉬프트, 빈자리는 0으로 채움ROR : 오른쪽으로 로테이션ROL : 왼쪽으로 로테이션 2. MOV ex) MOV r0, [r1, r2] : r0에 r1+r2 주소 값을 읽어서 저장 MOV r0, r1, ROR #1 : r1을 오른쪽으로 한 비트 로테이션 후 그 값을 r0에 저장 3. 산술 명령어 ex) ADD r1, r2 #4 : r2에 4를 더해서 r1에 저장 SUB r1, r1, #1 : r1에서 1을 뺌 ORR r1, r2, r3 , LSL r4 : r3을 r4 만큼 왼쪽..
02. [Python] 백준 온라인 1157번 문제 파이썬으로 작성했다. 아쉽게도 정답은 아니다.문제에서 요구하는건 첫째줄에서 입력받고 첫째줄에서 출력하는 것인데, 아직까지 파이썬의 개행없는 입력은 찾아보질 못했다.. 나중에 찾게된다면 그 함수를 이용해서 문제를 푸는 것으로.. 12345678910111213141516171819202122alpha = [0]*26result = 0 str_input = raw_input()str_input = str_input.lower() for i in range(0,len(str_input)): for a in range(97,123): if(str_input[i] == chr(a)): alpha[a-97] += 1 for b in range(1,26): if(alpha[0]