일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 논문리뷰
- BoB 12기 최종합격 후기
- bob
- 자살론
- 디지털 포렌식 트랙
- CodeEngn Basic 01
- h4ckinggame
- 사회적 사실
- CodeEngn
- 철학
- 코드엔진 베이직
- 에밀 뒤르켐
- Best of the Best
- 코드엔진 basic 5
- malware
- 코드엔진
- 사회분업론
- codeengn basic rce 01
- CodeEngn Basic 5
- BoB 12기
- 리버싱
- Today
- Total
목록2024/03 (10)
woonadz :)
#include int card[500000]; int main (){ int num; scanf_s("%d", &num); for (int i = 0; i < num; i++) { card[i] = i + 1; } int result = num; int front = 0; int back = num-1; while (1) { front = (front + 1) % num; if (front == back) { break; } back = (back + 1) % num; card[back] = card[front]; front = (front + 1) % num; if (front == back) { break; } } printf("%d", card[front]); return 0; }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmtRWC/btsFQfPNO10/7HgoZExLEzPI1j32SLFkRk/img.png)
사실 문제 자체는 procmon, malware defense 등의 동적 분석 도구나 동적 디버깅을 통해 쉽게 해결할 수 있지만 코드의 로직을 좀 더 자세히 알아보기 위해 코드 정적 분석을 기반으로 풀이를 작성하였습니다. Cabinet 파일 바탕으로 만들어진 실행파일인 것을 확인할 수 있습니다. 이를 통해 기존 실행 로직에 또 다른 파일이나 폴더가 숨겨져 있을 것이라 추측할 수 있습니다. sub_140004754 함수가 주로 프로그램의 메인 로직을 담당합니다. sub_140004754 함수에서 호출하는 sub_14000526C 함수는 tmp 폴더 내에 폴더를 생성하는 함수입니다. 코드 동적 분석을 통해 생성되는 폴더의 이름과 경로를 확인하였습니다. sub_140004754 함수에서 호출하는 StartAd..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEDbA2/btsFJ8KAcwL/zWCrL4u3Pbkxy8OxyBaKT0/img.png)
자가 삭제 (Self-Deletion) 자가 삭제는 악성 코드가 자체적으로 삭제되거나 비활성화되어 분석을 어렵게 만드는 기법입니다. 일반적으로 악성 코드는 침투된 시스템에서 실행되고 자가 삭제 기능을 수행합니다. 자가 삭제 기법은 다음과 같은 조건이 충족될 때 실행될 수 있습니다. 특정 시간이 지났을 때 특정 이벤트가 발생했을 때 특정 조건이 충족되었을 때 코드 조각화 (Code Fragmentation) 코드 조각화는 악성 코드의 일부 또는 전체를 분할하고 조각조각 나누어 각 조각을 다른 위치에 저장한 후 실행 시 조합하여 실행하는 기법입니다. 이로써 악성 코드가 정적 분석에서 탐지되기 어려워집니다. 코드 조각화는 다음과 같은 방식으로 작동합니다. 악성 코드의 명령문을 조각조각 분할하여 별도의 함수 또..
API v3 Migration 모든 VirusTotal 제품 및 스캐너의 엔드포인트입니다 . VT 사용자는 단일 API를 통해 VirusTotal의 모든 도구에 액세스할 수 있으므로 통합 프로세스가 단순화됩니다. 사용자 및 그룹 관리를 통해 관리자는 액세스 및 계정 관리를 자동화하고 팀 전체의 사용량을 추적할 수 있습니다. 파일, URL, 도메인 및 IP 보고서에 대한 추가 관련 정보 . VT API v3은 메타데이터 및 컨텍스트를 포함하여 모든 파일, URL, 도메인 및 IP 보고서에 대한 추가 정보를 제공합니다. 예측 가능한 리소스 지향 URL을 갖춘 REST 기반입니다 . VirusTotal API v3는 예측 가능한 리소스 지향 URL을 통해 액세스되는 HTTP 메서드로 웹 서비스를 구축하기 위한..
이전 프로젝트에 사용하기 위해 만들었던 스크립트입니다. import requests import hashlib import time import json # 예시 정답 answer = "T1027" # 사용자가 제출한 코드에서 추출한 techniques 번호들을 모을 리스트 techniques = [] # VirusTotal API 키 VT_API_KEY = "" #개인 VT 키 # VirusTotal API 엔드포인트 VT_API_SCAN_URL = "https://www.virustotal.com/vtapi/v2/file/scan" VT_API_URL = "https://www.virustotal.com/api/v3/files" def calculate_md5(file_path): # 파일 내용을 읽..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lbmJF/btsFGCEph8C/IPbkeH73EQ2UZVIVw5qWyK/img.png)
sub_140001000 함수에 사용자 입력값을 인자값으로 주어서 인증 검사를 수행하는 것을 알 수 있습니다. _BOOL8 __fastcall sub_140001000(const char *input) { int i; // [rsp+20h] [rbp-18h] int v3; // [rsp+24h] [rbp-14h] v3 = strlen(input); if ( (v3 + 1) % 8 ) return 0i64; for ( i = 0; i < v3 + 1; i += 8 ) sub_1400010A0(&input[i]); return memcmp(input, &unk_140004000, 0x19ui64) == 0; } 비교 메모리(&unk_140004000) : '0x7E', '0x7D', '0x9A', '0x8B..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJZmSP/btsFEOzcqJE/rzTRQwhp7V3F3VZkHsa130/img.png)
해당 포스팅은 악성코드 분석 시작하기 책을 바탕으로 작성하였습니다. DLL 검색 순서 하이재킹 프로그램이 실행되면 import 테이블 또는 LoadLibrary() API 호출한 프로세스의 결과로 관련 DLL이 프로세스 메모리에 로드됩니다. 윈도우 운영 체제는 사전 정의된 위치 순서대로 DLL을 검색해 로드합니다. Dynamic-link library search order - Win32 apps DLL을 로드해야 하는 경우 운영 시스템은 먼저 DLL이 메모리에 이미 로드되 있는지를 확인하고 로드되어있지 않다면 KnownDLLs 레지스트리 키에 정의된 DLL인지를 확인합니다. 사진에 보이는 DLL은 시스템 DLL이고, 윈도우 파일 보호를 통해 운영 시스템의 업데이트를 제외하고 삭제 또는 업데이트되지 않도..