목록분류 전체보기 (285)
tmxklab
0. 목차 Contents 0. 목차 1. 악성코드 식별 1.1 해쉬 생성 툴을 이용하여 해쉬 값 생성 2. 다중 백신 스캐닝 2.1 웹 기반 악성코드 스캐닝 서비스(VirusTotal) 2.2 PE 분석 도구(pestudio) 3. 문자열 추출 3.1 도구를 이용한 문자열 추출 3.2 FLOSS를 이용한 난독화된 문자열 디코딩 4. 파일 난독화 파악 4.1 패커와 크립터 패킹 탐지 툴) 5. PE 헤더 정보 조사 5.1 파일 의존성과 임포트 조사 5.2 익스포트 조사 5.3 PE 섹션 테이블과 섹션 조사 5.4 컴파일 타임스탬프 조사 5.5 PE 리소스 조사 6. 악성코드 비교와 분류 6.1 퍼지 해싱을 이용한 악성코드 분류 Fuzzy Hash ssdeep 6.2 임포트 해시를 이용한 악성코드 분류 임..
0. 목차 Contents 0. 목차 1. 개요 1.1 악성코드개요 1) njRAT 2) njRAT 특징 1.2 분석 정보 1) 분석대상 2) njRAT 압축 해제 후 확인 2. 상세분석 2.1 파일 정보 확인 2.2 샌드박스 분석 2.3 악성행위 분석 1) njRAT 실행 2) builder [클라이언트 생성기] 3) 감염 확인 및 기능 파악 2.4 njRAT 패킷 분석 1) 지정된 포트로 세션 맺기 첫 세션 연결 시 전송하는 목록 2.5 빌더 소스코드 분석 1) 실행환경 검사(안티 VM & 샌드박스 & 디버깅) 2) USB 감염 3) 설치 (은닉, 방화벽 예외, 지속 메커니즘 설정) 4) 세션 생성 5) BSOD: 보호기술 3. 정리 4. 참고 자료 1. 개요 1.1 악성코드개요 njRAT의 설명에 ..
1. 문제 군생활...ㅋㅋㅋㅋㅋ 1) 문제확인 확인 버튼을 누르거나 창을 닫으려고 하면 계속 메시지 박스 안에 있는 숫자가 1부터 시작해서 1씩 올라가게 된다. 2. 접근방법 UPX로 패킹되어 있으며 Autoit스크립트로 만들어져 있다. 언패킹 3. 문제풀이 1부터 790까지 반복됨으로 790의 MD5 해쉬 값을 구해서 제출하면 된다.
1. 문제 1) 문제확인 1234를 입력하고 "OK"버튼을 누르면 오른쪽 그림과 같이 나오게 된다. 2. 접근방법 VB로 만들어진 파일 3. 문제풀이 눈에 띄는 문자열은 존재하지 않지만 문자열을 비교하는데 사용되는 함수 발견 sub_401D8C()에서 __vbaStrCmp()가 사용된다. 입력 값을 "test"로 주었을 때 __vbaStrCmp()의 인자로 입력한 값과 "677345"가 들어간다. 이후에 이를 통해 분기하므로 다시 "677345"를 입력하고 확인해보자 "677345"를 입력하고 분기하게 되면 위 그림과 같이 나오게 된다. 따라서 Serial값은 "677345"
1. 문제 1) 문제확인 2. 접근방법 패킹 x 3. 문제풀이 패킹되지 않았는데 보이는 함수라고는 sub_4011AE()밖에 존재하지 않는다. 디버깅해보면서 확인해보자 쭉 따라가다보면 0x401006부터 Dialog관련 함수들이 보인다. 이를 통해 0x401006이 OEP인 것을 확인할 수 있다. x32dbg에서 제공해주는 scylla플러그인을 사용해서 덤프해주자 아이다에서 덤프파일을 확인해보면 제대로 함수들이 나오는 것을 확인할 수 있으며 성공관련 문자열을 참조하는 함수를 따라가보면 위 그림과 같이 sub_401114()에서 참조하는 것을 알 수 있다. 이제 저 함수를 중점적으로 디버깅해보자 Name에는 "CodeEngn"을 Serial에는 "1234"로 입력하였다. 위 그림을 확인해보면 입력한 Ser..
1. 문제 1) 문제확인 Name에 "CodeEngn"을 입력하고 아무 Serial값을 쓰니 오른쪽 메시지 박스 창이 뜨게 된다. 2. 접근방법 패킹은 되어있지 않으므로 바로 분석해보자 3. 문제풀이 성공을 뜻하는 문자열 확인, 해당 문자열을 포함하는 변수를 통해 참조하는 함수를 따라가보자 최종적으로 sub_401392()에서 성공을 뜻하는 문자열을 출력하는 메시지 박스를 띄우지만 sub_401392()를 호출하는 부분은 없고 위 그림과 같이 DialogFunc()에서 해당 함수의 주소를 push하는 부분밖에 없다. 따라서, 아까 실패했을 때 출력되는 문자열을 참조하는 함수를 따라가보자, 왜냐하면 Name값과 Serial값을 비교하여 성공 또는 실패하는 로직이 있을 것이라고 추정되기 때문이다. 실패를 뜻..
1. 문제 1) 문제확인 일정 시간이 흐르면 알아서 창이 종료된다. 2. 접근방법 Autoit스크립트로 만들어졌으며 UPX로 패킹된 것을 알 수 있다. 3. 문제풀이 Autoit Decompiler인 Exe2Aut 프로그램을 이용하여 분석 13.179초에 종료되는 것을 확인 문제에서는 몇 밀리세컨드에 종료되는지 MD5로 해쉬 값을 구하여 제출하라고 하였으니 13179의 MD5해쉬 값을 구하여 제출하면 된다.
0. 목차 Contents 0. 목차 1. 개요 1.1 취약점 개요 1.2 배경지식 1) 도커(Docker) 2) 컨테이너(Container) 3) namespace 확인 4) Docker Architecture 2. 테스트 2.1 테스트 환경 구축 1) 테스트 환경 구축 (희생자 PC) 2.2 POC 테스트 1) 공개된 POC코드 다운로드 2) 일부 코드 수정 3) Build Docker Image & Create Container 3. 상세 분석 procfs(프로세스 파일 시스템) 4.1 Dockerfile 4.2 run.sh 4.3 stage1.c 4.4 stage2.c 4. 대응 방안 5. 참고자료 5.1 runC취약점 관련 5.2 docker관련 5.3 docker 옵션 1. 개요 1.1 취약점..
1. 문제 확인 올바른 패스워드를 입력받아야 함 2. 접근 방법 main() sub_10B0 : fgets()로 v6에 input size 48만큼 입력을 받는다. check815546()의 파라미터로 들어감 이후에... ..... ... 이런 식으로 계속 check???()안에 또 다른 check???()를 호출한다. 계속 check???()를 호출하다가 마지막에 위에 함수를 호출하고 return한다. 요약하면 입력 값을 검증하기 위해 check???()를 여러 번 호출하고 if문이 참이어야 하므로 일일히 리버싱을 하기에는 시간이 오래 걸린다. 따라서, 바이너리 분석을 위한 파이썬 모듈인 angr모듈을 사용하여 문제를 해결한다. angr은 간단한 조건을 주면 자동으로 무작위 대입을 시작하여 결과를 도출..
1. 문제 1) 문제확인 아무것도 안뜬다. 위에 문제에서는 특정 문자열이 출력되기 위해 어떠한 데이터가 필요하다고 한다. 2. 접근방법 "Cracked by"문자열 참조하는 로직 찾기 sub_401362() 호출하는 로직 찾기 start()에서 eax값 1이면 우리가 원하는 메시지를 호출할 수 있다. 이제, 디버깅을 통해서 저 곳까지 어떻게 도달해야 하는지 알아보자 3. 문제풀이 CreateFileA()을 통해 "CRACKME3.KEY"파일을 open하는 것 같다. 여기서는 파일이 존재하지 않아 리턴 값으로 -1을 뱉었다 퉤 CreateFileA()를 통해 "CRACKME3.KEY"파일을 open하여 0x12(18)byte만큼 데이터를 읽어 input_val변수에 저장한다. 문제는 if문이 참이되어 su..