KISA 해킹 방어 훈련장 문제에 대한 풀이입니다. 


Network Level 3 문제를 보면 아래와 같습니다. 


제목 : 패킷 내용 분석


설명 : 패킷 내용을 분석해 접속자들끼리 나눈 비밀 

대화를 도청하고 암호를 획득하여라!



추천은 저를 춤추게 합니다 ^^



문제 풀기를 클릭하면 pcpcpc.pcap파일을 다운 받을 수 있습니다. 


와이어샤크(wireshark)로 열어봅시다. 


그리고, 메뉴에서 'statistics > conversations'을 선택해봅시다. 



두 호스트 간 통신한 내용을 간략하게 정리해서 보여주는 기능입니다. 


이제 하나 하나 'Follow Stream' 버튼을 눌러가며 통신 내용을 살펴 봅시다. 

전반적으로 훑어보고 의심가는 flow를 먼저 봐도 됩니다. 



위에서 선택한 대화는 네이트온으로 주고받은 대화네요. 

암호화 되어 있지 않아서 서로 주고받은 메시지를 모두 볼 수가 있습니다. 



대화로 주고받은 내용중에 인증키로 의심이 가는 메시지가 있습니다. 

혹시나 하는 마음에 넣어보니.. 역시나 맞네요. 


문제가 쉬운 감이 없잖아 있지만.. 어쨌든 풀었으니 패스~ 

Posted by KT한
,

KISA 해킹 방어 훈련장 문제에 대한 풀이입니다. 


Network Level 2 문제를 보면 아래와 같습니다. 


제목 : PCAP 파일을 분석하여라!


설명 : 주어진 PCAP 파일을 분석하여

인증키를 추출해 보아라!



추천은 저를 춤추게 합니다 ^^



문제 풀기를 클릭하면 proc_p2.pcap파일을 다운 받을 수 있습니다. 


와이어샤크(wireshark)로 열어봅시다. 


그리고, 메뉴에서 'statistics > conversations'을 선택해봅시다. 



두 호스트 간 통신한 내용을 간략하게 정리해서 보여주는 기능입니다. 

이제 하나 하나 'Follow Stream' 버튼을 눌러가며 통신 내용을 살펴 봅시다. 
전반적으로 훑어보고 의심가는 flow를 먼저 봐도 됩니다. 

보다 보니 telent 통신을 한 내역이 있네요. 

암호화 되어 있지 않아서 서로 주고받은 데이터를 모두 볼수가 있네요. 



아래쪽으로 내려보니 로그인 정보가 있습니다. 

설마 이렇게 쉬운 문제를 냈을까 싶지만.. 이 값이 문제에서 요구한 인증키 입니다. 


단, 저 문구를 통채로 넣는것은 아니구요.. 일부만 넣어야 합니다.

일부가 어디부터 어디까지 인지는 문구를 보면 아마도(?) 아실 겁니다. 


만약, 봐도 감이 안온다면 그냥 여러번 시도하시면 되니깐 푸는데는 지장 없을 겁니다. 

Posted by KT한
,

KISA 해킹 방어 훈련장 문제에 대한 풀이입니다. 


Web Level2 문제를 보면 아래와 같습니다. 


문제 제목 : 웹 개발자의 허술한 보안 코딩을 우회 하

라.


문제 설명 : 웹 어플리케이션 개발자가 XSS에 대한 보

안을 완벽히 하지 못하였다. 현재 적용된 필터링 룰을 

우회하여 XSS에 대한 취약점을 찾아 보아라.



문제 풀기를 클릭하면 다음 사이트로 이동합니다. 


http://221.143.48.110/web/level02/web_application.php




추천은 저를 춤추게 합니다 ^^



해당 사이트에 들어가니 다음과 같은 문구와 함께 입력창이 보입니다. 


웹 어플리케이션 개발자가 XSS에 대한 보안을 완벽히 하지 못하였다.

현재 적용된 필터링 룰을 우회하여 XSS에 대한 취약점을 찾아보아라.

조건) <script> 구문 이용. alert도 반드시 들어 가야됨.

EX) <script>alert('test')</script>



우선 주어진 예제 문구를 넣어봅시다. 



예상은 했지만 역시나 차단 됩니다. 



이번에는 특수 기호에 대한 필터링 기능을 확인 해보기 위해 아래처럼 변경해서 다시 시도해봅시다. 


&lt;script&gt;alert('test')&lt;/script&gt;



이번에는 차단이 되진 않지만 뭔가 다른 결과가 보여집니다. 


<>alert('test')</>


입력했던것과 비교해 보니 script라는 문자열을 필터링 하는것 같은 느낌이 드네요. 


그렇다면 script라는 문자열을 교묘하게 2번씩 써주는 방법으로 다시 시도해봅시다. 


&lt;sscriptcript&gt;alert('test')&lt;/sscriptcript&gt;


의도한 바는 XSS 필터링에 의해서 script라는 문구가 제거되고 나면 sscriptcript 처럼 동작해서 결국 script라는 문구가 남게 되는 겁니다. 


짜잔~

간단하게 XSS 보안 취약점을 찾았네요. 



이렇게 2단계는 생각보다 수월하게 풀 수 있답니다. 


Posted by KT한
,

KISA 해킹 방어 훈련장 문제에 대한 풀이입니다. 


Web Level1 문제를 보면 아래와 같습니다. 



제목 : 이것은 무엇에 쓰이는 것인고 ?


설명 : 해당 웹 사이트에 접속하여 사이트에 숨겨져 

있는 값을 찾아 인증키를 추출해 보아라~ 



문제 풀기를 클릭하면 다음 사이트로 이동합니다. 




추천은 저를 춤추게 합니다 ^^



여기저기 둘러 봐도 딱히 볼만한게 없어 보이네요. 

뭔가 참고할 만한 내용이 있는지 각 페이지의 html소스를 살펴보다 보니 뭔가 수상한 내용이 보입니다. 


product_details.html파일 입니다. 



속성이 'hidden'으로 된 'authkey'라는 이름의 값이 보이는군요. 

딱 봐도 뭔가 난독화된 코드 같다는 느낌이 드네요. 


난독화된 코드를 풀어보기 위해 적당한 사이트를 구글링을 해서 찾아봅시다. 


저는 아래 사이트를 이용했습니다. 

http://htmlobfuscator.com/


value에 해당하는 내용을 복사한 다음 윗쪽 입력 창에 붙여넣고 'obfuscate'버튼을 눌러봅시다. 

원래는 난독화를 시키기 위한 기능 같은데.. 어쨌든 하단 창에 복호화된 코드 내용이 출력됩니다. 


이제 이 내용을 실행시켜보면 됩니다. 


실행 시키는 방법은 많겠지만.. 따로 파일을 만드는게 귀찮으시다면 저처럼 w3schools사이트를 잘 활용 하시면 됩니다. 


w3schools.com 사이트에 들어가셔서 아무 메뉴나 들어가 보면 'Try it yourself'라는 버튼이 보입니다. 

소스를 입력하고 실행시키면 결과 화면을 보여주는 기능입니다. 



아래와 같은 창이 뜨고 왼쪽편 입력 창에 디코드된 자바 스크립트 코드를 붙여넣고 'Submit Code' 버튼을 누르면..


짜잔~ 실행 결과가 팝업창으로 뜹니다. 


스포일러를 할 순 없으니 키 값은 지웠습니다. ^^ 


Posted by KT한
,

KISA 해킹 방어 훈련장 문제에 대한 풀이입니다. 


System Level2 문제를 보면 아래와 같습니다


문제 제목 : 확률 게임에서 이겨라!


문제 설명 : 확률 게임이 있다. 이 게임은 1에서 

100중 숫자를 선택하여 컴퓨터가 선택한 값과 일치 

해야 된다. 일치하면 잭팟이 터지고 SHELL을 획득

할 수 있다. 게임에서 이겨라!




접근 IP : 221.143.48.107

접근 PORT : 22


접근ID : system200

접근 PW : securitypractice




추천은 저를 춤추게 합니다 ^^



접근 포트가 22번 이므로 SSH로 접속해봅시다.


$ ssh system100@221.143.48.107


주어진 비밀번호를 입력하면 접속이 이루어집니다. 


우선 현재 폴더에 어떤 파일들이 있는지 확인 해봅시다. 


-bash-4.1$ ll

total 12

-r-sr-x---. 1 root200 system200 9424 Aug  7 00:35 system200


1번 문제와 매우 유사한 형식의 실행 파일인것을 알 수 있습니다. 


우선 파일을 실행해 봅시다. 


-bash-4.1$ ./system200 

Probability Game ------------------------+

- Goal : JackPot!!!

- Menu Choice

(1) Game Start.

(2) User Name Change.

(3) Exit

-----------------------------------------+

INPUT - 1

-----------------------------------------------------------

-Game Method : If a number inputed from 1 to 100, print "JackPot"

-----------------------------------------------------------

Enter the Number ( 1~100 ) :1

Failed...


기본 메뉴가 나오면 '1'을 입력해 게임을 시작할 수 있고, 1~100까지의 숫자중 하나를 입력해서 맞추는 게임이군요. 

풀이 방법은 여러가지가 있을 수 있겠지만.. 저는 brute force 방식으로 풀었습니다. 


$ ./system200 

Probability Game ------------------------+

- Goal : JackPot!!!

- Menu Choice

(1) Game Start.

(2) User Name Change.

(3) Exit

-----------------------------------------+

INPUT - 1

-----------------------------------------------------------

-Game Method : If a number inputed from 1 to 100, print "JackPot"

-----------------------------------------------------------

Enter the Number ( 1~100 ) :`perl -e 'print "1"x500'` 


system200 프로그램에 '1'이란 값을 500개 입력 하라는 의미입니다. 

숫자 1을 입력해서 잭팟을 시도합니다. 


확률상 100번만 시도하면 성공 할 수 있겠죠? 물론, 운이 좋다면 더 빨리 성공 할 테구요. 


한참을 시도한 끝에 숫자를 맞추게 되면 아래와 같은 메시지가 나오면서 종료됩니다. 


INPUT - -----------------------------------------------------------

-Game Method : If a number inputed from 1 to 100, print "JackPot"

-----------------------------------------------------------

Enter the Number ( 1~100 ) :!Conguraturation !!!


권한을 확인해 봅시다. 


sh-4.1$ id

uid=504(root200) gid=502(system200) groups=504(root200),502(system200) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023


실제 화면을 보면 이렇습니다. 



이제 1번 문제와 동일하게 key파일에 들어 있는 내용을 읽으면 끝!


$ cat /home/root200/key


문제 출제자의 의도대로 푼게 맞는지는 모르겠지만.. 어쨌든 잘 풀리니 더 고민하지 않기로 했습니다. ^^ 

Posted by KT한
,