0x06 Malware(30)
-
CodeEngn Malware 08
와.. 마지막 문제 풀 차례다 그동안 악성코드 공부한 보람이 있긴 한가보다 ㅎㅎ Korean : 다음은 악성코드 Flow의 일부분이다. 다른 악성코드를 실행하여 추가 감염을 일으키는 함수의 주소를 찾으시오 (함수는 소문자가 아닌 대문자로 인증해주세요) Ex) 00401000 추가 감염을 일으키는 함수의 주소 다른 악성코드라면 리소스로 묶여있는 EXE 혹은 네트워크에서 전송받는 EXE라고 판단 했다. 윈도우즈 API함수에서 UAC(User Account Control)권한을 받을 수 있는 함수를 찾으면 된다. 여담으로 UAC 권한을 받을 수 있는 함수라도 WINLOGON의 레지스트리 조작은 불가능했어가지고 배치파일을 강제로 실행하게 만들어서 악성코드 인척 문제를 만든 적이 있다. Malware 당일 all..
2018.01.07 -
CodeEngn Malware 07
Korean : 다음은 악성코드 Flow의 일부분이다. 분석결과 이 악성코드는 특정 사이트에 접속을 시도 하고 있는데 접속이 안될경우 몇초 단위로 재접속을 한다. 몇ms 단위로 재접속을 하는가 으아 오늘 새벽에도 리버싱 seed 관련 문제 많이 애먹었었는데 이번엔 잘 푸리라 다짐하고 바이너리를 열어본다. 이놈도 마찬가지로 Graph View이다 . 아까 전 문제 보다 꼼꼼하게 살펴보기로 하였다. 밀리 세컨드로 96000h라고 적혀있다 ㅎㅎ 특정 사이트 접속은 http://noshit.fateback.com이기도 하다
2018.01.07 -
CodeEngn Malware 06
Korean : 다음은 악성코드 Flow의 일부분이다. 이 프로그램의 Thread Mutex는 무엇인가 Mutex : 스레드 내 중복 실행 방지 이 문제는 되게 재밌을 것 같은 기분이 든다. 파일을 열어보니까 와우 ida의 그래프 뷰를 던져두었다. 호오...이런식으로 CTF 문제 하나 만들어도 아주 재밌겠는걸..? 1분도 안되서 풀어버렸다. 그냥 MUTEX가 눈에 보인다. CreateThread 부분을 유심히 보면 된다.
2018.01.07 -
CodeEngn Malware 05
코드엔진의 악성코드 문제는 전부 소스코드인가보다.. 동적악성코드 문제를 기대했는데 아쉽긴 하지만, 공부는 되니까 분석해보자. Korean : 다음은 악성코드 소스의 일부분이다. 무엇을 하는 함수인가 (정답은 모두 소문자, 띄어쓰기 없음) int Malware_L03(char *StartOfData,char *Output,int SizeOfData) { int encoded=0,i,l=0;// base64? 헐 맞다 ㅋㅋㅋㅋ // 근데 요즘은 base64 안쓰지 않나? // 온라인 디코딩 사이트가 너무 잘되어 있으니까. ㅎㅎ char Table[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; long buffer,buffer2; ..
2018.01.07 -
CodeEngn Malware 04
Korean : APM(Apache, PHP, MySQL) 환경의 사이트를 운영중인 L씨 현재 SQL Injection 악성코드의 공격을 받고 있다 PHP 설정파일에서 어떤 옵션을 설정해야 안전한가 SQL Injection 잘 모른다. php도 잘 모른다. 답은 구글링이다. keyword : php설정파일 + sql injection 방지 ref: php를 설치한 후 php.ini 파일을 열어보고 magic_quotes_gpc 설정이 On으로 되어있다면 sql 인젝션 공격에 대한 대비가 어느정도 되어있다고 할 수 있다. [php.ini] 소스 내용 중 magic_quotes_gpc 부분; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc ..
2018.01.07 -
CodeEngn Malware 03
음.. 문제가 엄청나게 간단하다 몇줄 안주고 무슨 행위를 하는 함수인지 맞추어 봐라고 한다 u_short Malware_L03(u_short * data,u_short length) { register long value; u_short i; for(i=0;i>1);i++) value+=data[i]; if((length&1)==1) value+=(data[i]16); return(~value); }지금 딱 보면 &연산이 보이고 시프트연산이 보인다. 리버싱을 쪼오금 해봐서 어떠한 놈들이 가능한지 후보에 올릴 수 있었다. 어떠한 연산을 취한 value를 반환 시에는 보수를 취해서 반환한다. 그럼, 이 값은 패리티 체크이거나, 체크 섬이거나 둘 중 하나일 것 같다. 체크 섬 .. 지금 립케알에서 애먹고 있는..
2018.01.07