CodeEngn 41

[CodeEngn] RCE Malware L08 풀이

다음은 악성코드 Flow의 일부분이다. 다른 악성코드를 실행하여 추가 감염을 일으키는 함수의 주소를 찾으시오 (함수는 소문자가 아닌 대문자로 인증해주세요) Ex) 00401000꽤 복잡해 보이는 구조의 코드이다. 다른 악성코드를 실행한다고 하니 install 이나 exe 등 키워드를 잡고 의심스러운 주소에 대해서 깊게 분석해보는 방향으로 가져가보았다.이 악성코드 일부분 중에서 제일 첫 번째 주소인 sub_40249E를 살펴보면esi값에 저장하는 값중 'ExecInfo'라는 값을 찾아볼 수 있었다. 이걸 힌트로 잡고 더 찾아보면 될 것 같다.아래서부터 올라오며 분석을 해보았더니402606주소에서 lpExecInfo라는 주석을 찾았고, ShellExecuteExA 라는 함수를 호출하는 것으로 보아shell ..

Malware/CodeEngn 2025.10.24

[CodeEngn] RCE Malware L07 풀이

다음은 악성코드 Flow의 일부분이다. 분석결과 이 악성코드는 특정 사이트에 접속을 시도 하고 있는데 접속이 안될경우 몇초 단위로 재접속을 한다. 몇ms 단위로 재접속을 하는가악성코드 Flow부분이 pdf 파일로 되어있었다.이 코드의 하단 부분을 살펴보면 접속하고자 하는 url주소와 dwMilliseconds의 값을 찾아볼 수 있었다.url : http://noshit.fateback.com/, ms : 96000h이다.96000h는 헥사값이므로 10진수로 변환해주면 될 것이다.Auth :더보기614400

Malware/CodeEngn 2025.10.23

[CodeEngn] RCE Malware L06 풀이

다음은 악성코드 Flow의 일부분이다. 이 프로그램의 Thread Mutex는 무엇인가이런 악성코드 flow 구조를 볼 수 있는 pdf파일이 하나가 있었다.분석에 앞서 문제에서 제시한 Thread Mutex에 대해서 알아보았다.Thread MutexC언어에서 다중 스레드 환경은 프로그램의 성능을 최적화하는 기술 중 하나이지만,다중의 스레드가 동일한 자원에 접근할 때 발생하는 동기화 문제를 해결하지 못하면 프로그램은 예측할 수 없는 동작을 수행하게 된다.| 출처 : C 언어에서 스레드 동기화를 위한 Mutex 사용법 완벽 가이드 | IT trip이를 방지하기 위해 * Mutex라는 동기화 도구가 사용된다.*Mutex(Mutual Exclusion)Mutual Exclusion(상호 배제)의 약자로, 다중 ..

Malware/CodeEngn 2025.10.23

[CodeEngn] RCE Malware L05 풀이

다음은 악성코드 소스의 일부분이다. 무엇을 하는 함수인가 (정답은 모두 소문자, 띄어쓰기 없음)코드를 살펴보니 char Table[]에는 입력 가능한 문자열들에 대해 저장하고 있는 듯 하였다.마지막에서 encoded라는 인코딩 값을 반환하는 것과 이 값들이 익숙한 형태인 base64임을 알아챘다.Base64란?Base64는 데이터를 문자로 안전하게 표현하기 위한 인코딩 방식이다.이름에서 유추할 수 있듯이 64개의 문자만 사용해서 표현한다.A-Z(26) + a-z(26) + 0-9(10) + '+','/'(2) = 총 64동작 원리1. 먼저 데이터를 3바이트(24비트)씩 끊는다.2. 24비트를 6비트씩 4개의 그룹으로 나눈다.3. 이 6비트를 정수로 보고, 64개의 문자 중 하나로 매핑한다.코드 분석int..

Malware/CodeEngn 2025.10.22

[CodeEngn] RCE Malware L03 풀이

다음은 악성코드 소스의 일부분이다. 무엇을 하는 함수인가 (정답은 모두 소문자, 띄어쓰기 없음).txt파일이기에 메모장으로 열어보면 이 코드가 전부였다.사용된 연산자>>비트 우측 시프트 (Right Shift)비트를 오른쪽으로 이동시킴 → 2로 나누는 효과8 >> 1 = 4 (1000 → 0100)비트 좌측 시프트 (Left Shift)비트를 왼쪽으로 이동시킴 → 2를 곱하는 효과3 (0011 → 0110)&비트 AND 연산두 비트가 모두 1일 때만 15 & 3 = 1 (0101 & 0011 → 0001)~비트 NOT 연산모든 비트를 0→1, 1→0 으로 바꿈(보수 연산에 사용된다.)~5 = (0101 → 1010)코드 분석u_short Malware_L03(u_short ..

Malware/CodeEngn 2025.10.20

[CodeEngn] RCE Malware L02 풀이

다음 파일은 악성코드 소스의 일부분이다. 무엇을 공격하는것인가 ex ) ddos (정답은 모두 소문자, 띄어쓰기 없음)훑어보기첫 번째에 바디 부분의 주요하게 보이는 키워드로, xml,DAV, sql이 들어가 있는 것으로 보아 웹 검색 요청을 통해 무언가 요청하여 데이터를 추출하기 위함인 행위인 것 같았다.이 프로그램은 Scan과 공격을 토글로 진행하는 프로그램임을 확인했다.80(http 포트)를 찾는 행위를 하는 것을 확인했다.HTTP/1.1 프로토콜을 찾고Host: %s\r\nContent-Type: text/xml\r\nContent-Length: %d\r\n\r\n 라는 문구를 찾는 듯 하였다.웹 사이트 내에 있는 컨텐츠들에 대해 빈 게시글(Content)을 생성이나 검색을 진행하는 건가 싶었다.상..

Malware/CodeEngn 2025.10.19

[CodeEngn] RCE Malware L01 풀이

흐름 분석실행해서 코드를 살펴보면 첫 줄에 ip헤더의 destIP를 하나의 변수로 받는다는 것을 확인했고,세번째 줄의 ip헤더의 sourceIP는 lSpoofIP라는 인자값을 확인해 볼 수 있었다.글자에서 힌트를 얻었듯이 IP Spoofing과 관련한 공격 방식이라고 생각했다.하지만 이 TargetPort를 brandom이라는 함수를 통해 1000~10000 사이의 값을 하나를 가져온다는 것이 이상했다.ip헤더의 체크썸 (에러검증)을 우회하기 위한 작업도 확인해볼 수 있었다.대략적인 흐름을 보면 IP Spoofing 으로 방향을 잡으면 좋을 것 같다.라인별 상세분석1. 패킷 전송 대상 지정addr_in.sin_family=AF_INET; addr_in.sin_port=htons(TargetPort); a..

Malware/CodeEngn 2025.10.18

[CodeEngn] RCE advance L11 풀이

Q11. Serial이 94E7DB1B 일때 Name은 무엇인가. 해당 Serial에 대한 정답이 여러개 나오는 문제이며 Contact로 보내주시면 인증키를 보내드리겠습니다. 해당 Serial에 대해서 'Serial accepted' 메시지가 나와야 합니다.실행한 후 OK를 누르면 다음과 같이 유효하지 않은 Serial 번호라고 한다.전체 수동 분석Ollydbg로 text strings referenced를 통해 성공과 실패시 출력문구를 확인했다.실패했을 경우 출력되는 문구로 찾아가 처음으로 시작되는 위치인 4010EF 로 이동했다.살펴보니 4010F2 에서 401146 주소를 한 번 호출하는 것 외에는 별다른 호출하는 함수가 없어보였다.4010EF에 BP를 걸고 디버깅 진행하고, 4010F2 에서 st..

Reversing/CodeEngn 2025.09.14

[CodeEngn] RCE advance L10 풀이

Q10. Serial이 WWWCCCJJJRRR 일때 Name은 무엇인가. Hint 1 : 4글자, Hint 2 : 정답으로 나올 수 있는 문자열 중 (0~9, a~z, A~Z) 순서상 가장 먼저 오는 문자열실행했을 때 CMD로 실행되며, Name과 Serial 값을 받고 출력되는 문구들을 확인하였다.Exeinfo PE를 통해 C++로 작성된 파일임을 확인하였다.텍스트들 중에서 성공했을 때의 문구를 확인했다.해당 텍스트의 주소로 가보아도 별다른 힌트를 얻을 수 없었다.EP부터 천천히 분석을 시도하였다.401233주소에서 입력하는 Name값을 받는다.입력한 값을 2개를 받으면 바로 끝나버리므로 추가로 BP를 걸 지점을 찾아야 했다.Name값과 Serial값을 받는 지점에 BP를 걸었었지만 별다른 소득이 없어..

Reversing/CodeEngn 2025.09.14

[CodeEngn] RCE advance L09 풀이

Q9. Password는 무엇인가실행 시 cmd로 실행되며, Username과 password를 받는 프로그램이다.exeinfo PE를 통해 C++로 작성된 파일이라는 것을 알 수 있었다.ollydbg로 text를 확인해 본 결과 DonaldDuck이라는 문구를 확인할 수 있었다.아마도 Username인 듯했다.분석하던 중 디버거 프로그램 동작을 검사하는 IsDebuggerPresent 함수를 발견했다.81105F주소에서 Username값을 2개의 주소에서 받아오는 것을 확인했다.한 줄씩 실행해보면 DonaldDuck 이라는 글자에서 2글자씩 빼와 검사하고, 최종적으로는 해당 값을 출력하는 듯 하였다.마지막에서 검증하는 값이 왜 서로 다른지에 대해서 의문이 들긴하였다.814080주소 이후부터 Userna..

Reversing/CodeEngn 2025.09.14