목록보안/악성코드 (103)

저번에 풀었던 문제와 동일하다. 프로그램 실행 시 팝업창이 나오고 종료된다. UPX로 패킹이 되어있다. 언패킹을 해주었다. 안티디버깅에 걸린다. 해당 참조 부분에서 리턴값을 0으로 바꾸어준다. 의심함수 중 timeGetTime을 분석했다. 모두 call을 하지만 한 부분에서만 edi에 옮긴다. 이는 나중에 시간 관련 로직에서 사용하기 위해 레지스터로 옮긴 모습이다. ebx+4의 참조 부분을 찾는다. 0x337b를 10진수로 바꾼 후 md5의 해시값을 구해주면 끝이다.

xplico를 통해 분석진행 검출된 url개수가 너무 많아 스구일을 사용했다. 명령어를 검색해서 replay를 진행했다. 의심가는 부분을 캡처했다. payload를 확인해서 IP를 정리해주었다. 해당 내용을 토대로 마이너에서 검색했다. site의 url를 찾았다. 해당 url을 검색하여 html형식으로 다운로드 해준다. html코드가 나온다 내용이 많아서 redirector IP에서 더 정보를 가져오기로 했다. 해당 Hostname을 검색해준다. 일치하는 url을 검출했다. 이로써 해당 site는 ifram태그를 이용해 악성 url로 리다이렉트를 해준다. 와이어 샤크에서도 iframe 태그 사용 내역을 확인할 수 있다. 악성 url을 자바스크립트로 난독화되어있다. 복호화는 다음에 진행할 예정이다. 마지막..

CapTipper은 python으로 제작된 악성 트래픽 분석 도구이다. CLI 환경에서 구동을 한다. 실행을 하면 다음과 같이 머라 여러 내용들이 내려간다. hosts 명령어를 통해 도메인과 IP를 묶어서 확인할 수 있다. convs명령어를 통해 데이터를 주고받은 로그를 확인할 수 있다. 하지만 이런 기능들은 다른 분석도구에서도 제공된다. CapTipper의 유용한 기능이다. iframe 요소는 해당 웹 페이지 안에 제한 없이 다른 페이지를 불러올 수 있어 보안 측면에서 취약하다. iframes와 ID를 합쳐 입력하면 iframes 이 사용되었는지 확인할 수 있다. 그 외 다른 도구들을 요약했다. IDS장비 (Sguil - Snort -ET) Sguil 네트워크 보안 모니터링 및 탐지 이벤트 분석 도구이..

NetworkMiner windows용 NFAT이다. 운영 체제, 세션, 호스트 이름, 열린 포트등을 묶어서 확인할 수 있다. 예시로 Youtube와 같은 웹 사이트에서 네트워크를 통해 스트리밍되는 미디어 파일을 추출하고 저장하는 데 사용할 수있다. 윈도우 환경에서 간단하게 실행할 수 있다. ftp pcap 샘플 파일을 올렸다. 다양한 호스트 관련된 내용을 확인할 수 있다. pcap파일에 데이터가 존재하지 않아서 Unknown으로 뜬다. Files 탭에서 파일을 바로 다운받아 사용할 수도 있다. 쓸모있는 유용한 기능이다. 세션과 파라미터를 확인할 수 있다.

Xplico란 NFAT(네트워크 포렌식 분석 도구)로 패킷 스니퍼로 수행된 수집 내용을 재구성하는 소프트웨어이다. xplico 웹에 처음 접속한 화면이다. 해당 문구를 복사하고 실행해준다. ok문구가 나오면 성공이다. 아이디 패스워드를 입력하고 들어가 준다. case를 새로 만들어준다. case를 만들면 그 안에 새로운 세션들을 만들어 관리할 수 있다. 세션을 만들어 주었다. 그럼 이와 같은 화면이 나오는데 파일을 선택해서 분석을 할 수 있다. http pcap 샘플 파일을 넣어주었다. 그 후 upload를 하고 기다려준다. 완료된 후 Dns목록이다. name서버와 ip주소를 묶어서 확인할 수 있다. web의 site목록에서 url들을 확인할 수 있다. url을 클릭하여 그 당시 데이터들을 확인할 수 있..

Basic의 마지막 문제다. 프로그램 실행시 창하나가 뜨고 베너창에 Uncrack이라 적혀있다. 이것을 crack문구로 나오게끔 key파일을 만들어주어야 한다. 처음 프로그램 실행시 CRACKME3.KEY 파일이 필요한것으로 추측했다. 파일을 만들고 임의의 값을 넣어주었다. 다음은 KEY의 길이를 비교한다. 0x12만큼 맞춰주어야 한다. 길이를 맞추어주고 다시 디버깅을 한다. 두개의 중요함수가 있다. 0x401311과 0x40133c이다. 해당 함수에서 많은 분석을 했지만 의미가 없었다. 입력한 문자에서 14글자를 한글자씩 가져와 여러 연산을 거치지만 cmp al, 0 에서 바로 종료 루틴으로 가기에 첫 글자를 0x41로 맞추어 종료루틴으로 간다. 그후 0x12345678을 진행하지만 어자피 값이 0이기..

UPX패킹이 되어있다. 프로그램을 이용해서 언패킹을 진행했다. 디버깅을 진행할려하면 에러가 발생한다. 안티디버깅이 걸려있다고 생각했다. IsDebuggerPresent가 걸려있다. IsDebuggerPresent는 디버거가 실행중인지 확인하여 실행중이면 1 아니면 0을 eax넣고 반환한다. 즉 eax에 0을 넣고 ret하면 디버깅을 진행할 수 있다. 코드를 수정해주고 분석을 진행한다. 빠른 분석을 위해 IDA를 활용했다. 의심가는 함수중 timeGetTime의 참조영역을 찾기로 했다. StartAddress 근처를 탐색했다. 의심이 가는 루틴을 찾았다. 어떠한 값을 비교한 후 sleep으로 가거나 종료 루틴으로 간다. 2B70이라는 값을 10진수로 바꾸면 11120이 나온다.