분류 전체보기 147

KUCIS 랜섬웨어 과목

인터넷 역사 ADSL 등장(1999년 4월 1일; 하나로 통신(SK 브로드밴드) Asymmetric digital subscriber line(비동기식 디지털 가입자 회선) 장점 : 가격 정액제 전송 데이터 (모뎀(전화선) 통신 속도 : 56kbit/s) 다운스트림 시 1.5Mbps 업스트림시 384Kbps VDSL(2002년부터 상용화; KT) 서비스 속도는 10Mbps로 최대 2Mbps 속도 메가패스(2003년; KT) 초고속 인터넷 랜섬웨어(Ransom) 공격 특징 및 추세 개요 - 악성코드를 설치하고, 사용자 파일을 모두 암호화시켜 인질로 잡고, 금전을 요구하는 공격 - 공격기법 : 파일암호형(Cryptowall 등), 화면 잠금형(Winlocker 등), MBR파괴형(Petya 등) 국내 이랜드..

카테고리 없음 2022.07.19

시스템 해킹 Stage 2

컴퓨터 구조와 명령어 집합 구조 컴퓨터 구조(Computer Architecture) 컴퓨터의 기본 설계. 서로 다른 부품들이 이 설계에 맞춰서 개발되고 조립되어 컴퓨터가 완성됨. 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 구성하는 방법. 명령어 집합구조(Instruction Set Architecture, ISA) CPU가 사용하는 명령어와 관련된 설계 CPU의 하드웨어적 설계 = 마이크로 아키텍처(Micro Architecture) -> 정의된 명령어 집합을 효율적으로 처리할 수 있도록, CPU의 회로를 설계하는 분야. 인텔 x86-64 아키텍처 = 가장 널리 사용되는 ISA 중 하나. - 기능 구조의 설계 폰 노이만 구조 하버드 구조 수정된 하버드 구조 - 명령..

Dreamhack 2022.07.18

시스템 해킹 Stage 1

Welcome Hacekers :) 라는 문장이 출력되도록하는 입력값을 찾아보라는 작은 퀴즈가 있었다. 일단 c코드는 입력값을 받아서 buf에 저장하고, 이를 DreamHack과 9글자 비교해서 같으면 Welcome Hackers :)를 출력하는 것 같다. 파이썬 코드는 리스트에 있는 숫자들을 16진수 30과 xor 연산을 하는 것 같은데 그럼 저 리스트에 있는 숫자 하나하나가 Welcome Hackers :) 라는 문장이 나오게 하는 조건을 만족시키는 문자열인 것으로 생각했다. 근데 사실 파이썬 코드를 제대로 이해하지는 못했다. 일단 C코드랑 입력값이 똑같지 않을까 생각해서 DreamHack이라고 입력했는데 원하는 문장이 나오긴 했다. 리눅스 환경 구축은 Vmaware에 Ubuntu 18.04 버전을 ..

Dreamhack 2022.07.18

KUCIS : 데프콘 문제로 풀어보는 메모리 포렌식

문제 1 : 주어진 defcon.mem 메모리의 SHA1 해시 값은 무엇인가? 문제 4 : wscript.exe 프로세스의 자식 프로세스 이름은? 명령어 = vol.exe -f Defcon.mem --profile=Win7SP1x64 pstree (프로세스를 트리구조로 봐야함) ... 으로 들어가 있는 부분이 자식 프로세스 문제 6 : 악성 프로세스로 인하여 연결된 세션의 공격자 IP는? netscan입력했을 때 State가 ESTABLISHED 인것들을 찾아봄. 포트 번호도 이상하고 파일 이름도 이상한게 있음. 이게 악성파일인듯 칼리에서 msfvenom 할 때 포트 번호 지정 안하면 4444가 디폴트로 지정됨. 문제 7 : VCRUNTIME140.dll을 로드하고 있는 프로세스의 이름? 문제 8: 악성..

카테고리 없음 2022.07.14

리버싱 - 코드엔진 basic -06

serial과 OEP(Original Entry Point)를 찾아야하는 문제 Upx로 패킹돼있는 파일이므로 언패킹을 해주었다. 처음에 언패킹을 안하고 IDA로 열었을 때는 함수가 start 하나밖에 안떴었는데 이젠 제대로 뜬다. 일단 문자열 참조로 serial이 맞았다고 보여주는 문자열이 어디와 연결돼있는지 확인해보기로 했다. 의심되는 게 일단 You got it ;) 과 Good Job! 부분이다. sub_401030 함수와 연관있는 것 같다. sub_401030 함수로 이동하니까 GetDlgItemTextA를 call하는게 보인다. sub_401320, sub_401290도 call 하고 있다. 이 세 가지 call을 한 번

카테고리 없음 2022.07.12

리버싱 09 - 혼자 실습

주어진 chall3.exe 파일을 윈도우 파워쉘에서 실행함. 맞는 문자열을 입력해야 Correct가 뜨고, 그 정답이 뭔지를 알아내야 함. IDA가 찾은 main 함수가 바로 나옴. 일단 Strings에서 Correct 문자열을 찾아보고 해당 문자열이 어디서 참조되고 있는지 확인해보겠음. 역시 main함수에서 참조되고있음. 지난 실습을 하면서 정말 많이 본 코드가 바로 등장함. 생겨먹은 걸 보면 sub_1400011B0은 printf 함수, sub_140001210은 scanf 함수로 보임. 그리고 sub_140001000 함수가 v4를 인자로 받아서 입력값을 검증하는 함수겠지 싶음. 함수 내부에 있는 sub_140001080을 디컴파일하면 vfprintf가 나옴. 이를 통해 sub_1400011B0은 ..

Dreamhack 2022.07.12

리버싱 08 - Patch

플래그를 이미지로 출력해주지만 일부가 가려져있어 플래그를 읽을 수 없는 상태의 프로그램. - 파일 실행 - 정적 분석 - 동적 분석 - 파일 바이너리 수정 다운 받은 파일을 실행해보면 플래그가 가려져있는 것을 볼 수 있음. IDA로 Patch.exe 파일을 실행함. 이 문제는 WinAPI를 이용해 만들어진 GUI 프로그램이기 때문에 WinMain 함수를 찾아야 함. 이 함수는 보편적으로 윈도우를 생성하고 관련된 초기화 작업을 진행함. 이와 고나련된 API를 상호참조하는 방식으로 찾을 수 있음. 프로그램이 DLL로부터 임포트해 사용하는 함수의 목록은 Imports 탭에 존재함. 윈도우 생성 시 사용되는 CreateWindowExW 함수를 더블클릭해서 함수가 임포트되는 곳으로 갈 수 있음. x키를 눌러서 함..

Dreamhack 2022.07.12

리버싱 07 - rev-basic-1

IDA에서는 비주얼 스튜디오로 프로그램이 컴파일 되었을 때 어떻게 진입점에서 main 함수를 호출하는지 알고 있기 때문에 바로 main 함수를 찾을 수 있음. _arct_iob_func() 함수를 이용해서 stdout 파일 스트림을 가져와 sub_1400012B0 함수를 전달함. vfprintf 함수의 파일 스트림이 stdout이기 때문에 sub_1400013E0 함수가 printf 함수임을 알 수 있음. 단축키 n으로 함수 이름을 printf로 바꿈. 분석한 함수가 어떤 함수인지 알아냈으면 이름을 바꾸는 게 코드 분석하기 간편함. sub_140001440 함수가 scanf 함수임을 알 수 있음. sub_140001300 함수 내부를 보면 _stdio_common_vfscanf 함수가 보이기 때문임. m..

Dreamhack 2022.07.12

리버싱 06 - rev-basic-0

맞는 입력값을 찾아야 함. 입력값을 검증하는 함수를 찾아야 무엇이 제대로 된 입력값인지 알 수 있으므로 String에서 correct 문자열을 찾음. correct 문자열이 참조되는 함수를 살펴보기 위해서 Buffer를 클릭하고 단축키 x를 눌러서 xrefs를 실행함. main 에서 해당 문자열을 참조하는 것을 볼 수 있음. Direction 부분을 더블클릭하면 나오는 부분에서 F5를 눌러서 디컴파일 실행함. 눈에 띄는 함수 sub_140001190과 sub_1400011F0이 보임. IDA는 어셈블리 코드를 C언어로 컴파일해주기 때문에 코드 분석이 쉬워짐. 일단 저 두 함수가 출력, 입력과 관련이 있는 것 같아서 두 함수를 더블클릭해서 들어가보면 디컴파일된 것이 나옴. _acrt_iob_func() 함..

Dreamhack 2022.07.12