패스트터틀

보안관제 및 침해사고 대응(19.5.3) 본문

Cyber Security(undergraduate)/security monitoring

보안관제 및 침해사고 대응(19.5.3)

SudekY 2019. 5. 3. 14:52

악성코드 동적분석 실습

 

악성코드 분석

 

1. 초기분석

 1.VT조회

 2.인증서검증

 3.문자열 검사

2. 정적분석

 1.패킹유무검사

 2.PE 구조 정보 확인

 3.역공학

3. 동적분석

 1.메모리분석

 2.프로세스 분석

 3.네트워크 분석

 4.감염 전후 분석

 

PE구조란

 

윈도우에서 프로그램을 키면은 DOS헤더를 시작으로 리눅스에서는 파일구조가 조금 다르긴 한데 특정한구조를 가지고

 

있고 이 파일이 dll을 사용하고 리눅스에도 동일하게 있음. 이런식으로 프로그램을 시작하기위한 규격?구조?라고 보면됨

 

이것은 악성코드분석을 한다고하면 꼭 알아야됨. 

 

만들면서 PE구조를 공부하는것이 있는데 그거를 하려면 유명한 도구가있는데 그중 하나가 HxD가 있음 

 

결국에는 파일이 바이트로 저장되어있는데 이런것들을 분석하는것

 

여하튼 PE구조가 저런식으로 생겨있는데 이런정보를 숨기는법이 또 있고 그것을 패킹이라고 함.

 

PE구조안에는 변조할수도있긴하지만 또 수많은 정보가 있기에 이런식으로 파악하는것을 역공학이라고 함

 

역공학이라는것은 어셈블리어, 메모리구조, 스텍, 또 이런식으로 알아야되는 선수지식이 많음

 

선수지식이 많이 필요하다는것은 되도록 하면서 배우는것이 가장 적합하지 않을까 싶음

 

VT조회

 

Virus Total 이며 이곳에 파일을 올릴때에는 유의해서 올려야한다. VT은 중요한파일은 올리면 누가 다 볼수있다고함

 

VT에서 파일이 대충 무엇을하는지에대해 간단한 정보 파악가능. 

 

인증서검증

 

디지털서명이 걸려있으면 변조가 안되는데 100%신뢰도 할수없는것이 가끔씩 코드사인이 유출되는경우가 있음

 

인증서가 유출이 된다는것은 굉장히 큰일이기 때문에 큰회사는 굉장히 중요시 함.

 

문자열 검사

 

바이너리 내에 인지할 수있는 문자열을 식별, 패킹,난독화 등으로 인해 매우 제한적인 정보만 식별 가능

 

정적분석

 

정적분석을 하려면 PE구조가 암호화가 되어있으면 안되고 PE구조를 읽어서 패킹이 되어있는지 확인하고

 

Themida패킹이 가장 유명하고 대세이고 이것이 되어있으면 일부만 메모리가 올라가서 전부를 파악할수없고

 

분석가를 괴롭힌다고 보면됨

 

PE구조 정보

 

역공학

 

암호화기술의 발달로 인해 분석 난이도 및 시간 소요가 큼. Cerber 랜섬웨어어 라는 본체는 

 

decrypt_string(wer,qwer,qty,)이런식으로 되어있으면 인자들이 스택에 들어가고 이런거를 파악하려고 한다면

 

알아야 되는 정보가 굉장히 많음 근데 브레이크포인트 걸고 하면 그렇게까지어렵지 않다고함

 

메모리분석

 

실행된 프로세스의 메모리를 분석, 실제로 파일을 실행해서 보는것이고, 어짜피 암호화하든간에 파일이 메모리에 상주하

 

기 때문에 확인하면가능

 

네트워크분석

 

Wire Shark 특정 프로세스에서 나오는 트래픽만 뽑아서 볼수있음

 

중요한건 프로그램을 실행했을때 발생하는 트레픽을 분ㅅㄱ하는것

 

감염 전 후 분석

 

Cuckoo Sandbox

 

vmware 악성코드 분석 진행

 

vmware에서 스냅샷(파일시스템전부저장)을 찍고 시작해야지 아성코드 분석 전 상태로 쉽게 돌릴수있기에 분석

 

뱅커,드로퍼, 등 악성코드 종류 기본적으로 알아야됨 (VT로확인해서)

 

등록정보 - 인증서로 확인하면 바이러스는 인증서가 없음

 

각종 툴 이번경우에는 BinText에서 열어보기 근데 그러면 패킹때문에 볼수가없음

 

그러면 패킹첵킹기 설치후 확인해보면 패킹 여부를확인할수있음

 

패킹이되어있으면 분석이 상당히 고난이도로 바뀌기 때문에 힘들어진다고 보면됨

 

PE Explorer로 보면은 어느정도는 볼수있음 타임스탬프나 라이브러리?를 볼수있는데 악성코드로 패킹이 되어있으면

 

별로 정보가 안뜨는게 장난질을 했다고 볼수있음

 

ghidra라는 툴을 얼마전에 nsa에서 오픈소스로 풀어버림 미국nsa에서 운영하는 github계정에 ghidra가 있고 강의자료도

 

같이 들어있어서 공부하기 좋게 해놓았는데 아이다는 유로인데 이거는 영어지만 잘 되있다고함

 

(무슨소리하는지 잘 모르겠음)

 

분석시에는 프로세스를 필요한거외에는 전부 꺼버려서 노이즈를 최소화하여야함

 

실제로하실때에는 네트워크 Disonnected를 해야됨. 

 

네트워크 끊길때에는 작동하지 않는 악성코드도 있음, 

 

네트워크 연결되있어도 악성코드 서버가 죽어있으면 안될수도 있음

 

그래서 꺼지기전에 브레이크걸고 볼수있음

 

메모리영역에서 보면 url 도 보이고 프로세서 아이디도보이고(이건 일반적으로나오는 문자열), 

 

경험적으로 보았을때 수상한것만 보면 나옴, url주소랑 어떤 연관이 있는지도 경험적인 판단가능

(경험이 잴 중요함)

url사이트를 들어가보면은 (중국은 qq닷컴(강의자료때에는)) 이라서 중국이랑 연결이 왜되어있는지 알수없기에 악성코

(착 짱 죽 짱)

드 일거라고 판단할수잇음. 이 악성코드는 qq도메인의 브라우저 웹사이트로 연결을 하고 우리뱅크 시티뱅크 등등등...

 

국내 은행관련된 사이트 url이 들어가있는거를 봐서는 Pharming을 하는것으로 추측할수있음

 

Base64라는것이 있음, 문자열을 치면 깨지게 되어있는데 이것을 안깨지게 하는것임

 

Encoding Viewer로 보면은 수상하다는것을 알수있음

 

이런것들을 어떻게 찾았냐고 물어보면은 그저 경험적이라고 물어볼수없고 하다보면은 특정한 패턴이 보인다고 함

 

이 패턴들이 모여서 경험을 형성하고 나중에 보면은 그 경험이 새로운 패턴을 발견할수 있게한다고함

( 책 생각의 탄생 - 패턴형성 )

 

하나의 팁을 주자면 notepad++ 가 있는데 이것으로 읽기좋게 컬러링을 할수있고

 

왜 여기서 바로 visual basic을 선택할수있냐고 물어보면 그저 경험이라고 얘기한다. 이쪽분야는 경험이 9할인것같다.

 

http로 파일을 업로드할떄 파일의 끝지점을 서버가 알아야되는데 클라이언트에서 서버로 보낼때 어떤 특장문자열이 오

 

면 서버가 파일을 그만받는데 네트워크에서 탐지규칙을 만들면 저 고정?문자열이 있으면 (근데 이부분은 동적으로 문자열변경가능)(그래서 요새는 거의 없음? 대세는아님?)

 

PE Explorer로 보고도 교수가 뭔가를 파악했고 그다음에 여러가지정보로 보면은 악성코드라고 분석을 완료했다고 보면

 

됨. 여하튼 결론적으로 메모리에 올라간 정보를 파악해서 사람이 인지할수있는 부분으로 바꾸어서 파악할수 있는 최대

 

한의 정보를 다양하게 얻었다고 보면됨

 

보통의 악성코드는 뮤텍스를 사용해 특정한 키를 쓰거나 플레그를 써서 중복 실행이 안되게함

 

항상분석을 할때는 깨끗한 상태에서 분석. 메모리할때도 깨끗

 

system system sysinternals 의 제작자는 이거 만들고 요트를 탈정도 엉청난 기능의 프로그램이니 나중에 기회가되면 사

 

용해보라고 권함

 

Process Moniter를 실행후 아까 했떤 파밍 악성코드를 실행시키면 프로세스모니터에 굉장히 많은 프로세스가 갑자기 많

 

발생하게 되는데 차근차근 분석으로면 API에서 파밍 관련이 호출되는것을 보고 

 

여기서 관련프로세스 관련된것만 볼수있는것만 볼수도있고 udp 통신을 했다는것도 볼수있고

 

마지막으로 네트워크 분석에서는 Wire Shark을 사용하고 굉장히 유명한 네트워크 분석중에 하나고

 

인터넷으로 통신하는 모든내용을 분석을해서 사람이 인지할수있는 언어로 번역을 해주는 도구라고 생각하면됨

 

네이버로 들어갔을때 과정이 어떻게 되냐를 간단히 보면은 주소창에 네이버를 치면 네이버라는 주소가 결국에는 통신

 

을하려면 ip를 받아야되고 dns쿼리을하고 그거를 응답을 한다음에 받는다는데 쿼리를 하면 dns가 있다고하면 ip를 받아

 

서 ip랑 통신을 하게 된다고 한다. 그리고 TCP로 통신을 시작한다는것을 알수있음

 

TCP 프로토콜로 씬, 엔널뤼지?, ? 하나더,하면 http통신 TCP 3wayhandshake의 세단계임 

 

TCP 통신이 시작될때 connect함수를 서버에다가 sin 보내고 서버는 sink 를 맞추고 알겠다라고 클라이언트에게 보내고

 

클라이언트는 sink 패킷을 받고 통신을 해도되겠구나 엔놀리지를 서버에다가 보냄

 

통신을 시작할떄는 3way 반대는 4way를 씀 3way되면 Esta탑 상태가 되는데 여기서 fin크서 ack서크 fim서크 ack크서

 

로 보내는데 이거는 모든통신이 거의 tcp상에서 이런식으로 이루어진다고 보면됨

 

번외 ) 한가지 트랜드한 이야기를 하고 신기한걸 하나보자면 현업에 계신분도 잘모르는정보인데 WireShark로 트랩핍을 떠놓고

 

구글을 갔는데 TCP통신이 안뜨는데 구글은 it트랜디를 선두하는데 QUIK 프로토콜을 쓰고 요새는 http를 암호화하고 

 

구글은 UDP에다가 http를 암호화해서 크롬을 가지고 구글을 가면 UDP통신을 한다는것을 알수있음 

 

보안은 자고일어나면 신기술이 계속해서 나오기때문에 겁이난다라고 함 항상 신기술이 굉장히 많이 나온다고함

 

그렇기에 항상 공부를 해야되는 분야이기 때문에 나이먹어서 하기힘들지 않을까고민을 하고있다는 여담ㅋㅋ

 

일단은 이런식으로 통신을 한다는것을 안다는 가정하에

 

악성코드를 실행하게 되면은 아까 메모리분석을 하면서 보았던 도메인이 보이고 그리고 ip가 어디인지 나오며

 

이 아이피랑 통신을 시도하려는것과 더불어 유저프로파일 (프로필) http프로토콜은 기니까 플로우 TCP 스트림을 눌러보

 

면은 사람이 인지할수있는것처럼 볼수있는데 여기서 http가 이동되었다는 사실을 알수있음

 

이런것들은 전부 급하게 알아야되고 대충 어느정도 분석을 해야할때 빠르고 비교적 쉽게 분석할수있게 해야됨

 

Cuckoo샌드박스 같은 이런식의 일련의과정을 한번에 해주는 프로그램이 있고 이런것들은 돈주고 파는 툴?이라고 보면

 

됨 샌드박스는 이런식을 전부 자동화해주고 이런결과를 알려주고 우리가 수동으로 하는것을 아주간편하게 할수있고

 

시간을 매우 절약할수있다는 장점을 가지고 있음

 

요새는 악성코드가 vm을 탐지하기 때문에 쉽게 분석 못하게 이런것들은 베어메탈? bearmetal ? 을 또는 실제 기기 에

 

서 분석하는것

 

요새는 FLAREBLAME에서 제공하는 악성코드분석가가 쓰기 편한 가상머신을 제공해주는것들

 

IDA랑 GHIDRA? 는 추가해야됨

 

솔직히 말하자면 이안에 전부 모든것들을 쓰지는 않지만 어느정도 쓰는것만 쓰지만 매우 큰 도움이 되고

 

분석가들은 자기가 쓰는 vm이미지 들을 하나씩 가지고 있다고함

 

분석툴종류

 

 

 

 

악성코드
돋보기로 멈추고 clear후 악성코드실행 다시 돋보기(오른쪽 네모는 필터들을 잘걸러야됨)

 

 

hwp밑에 gbb , gswin32c 같은 iexplorer랑 인터넷 연관되어있는것을 확인

 

한글문서인것같지만 악성코드이고 정적문서로는 하기가 힘들다고함 이유를 

 

Process Moniter실행후 쓸데없는거 끄고선 hwp 를 실행해보면은 국정감사 계획안으로 뜨지만 

 

실행시간도이상하게 오래걸리고 Tools- Process Tree를 보면은 프로세스밑에 이상한것들이 많이 켜져있음

 

gbb이라는게 이상한게 있고 익스플로러가 통신한다는것을 보게되었고

 

그리고 스냅샷을 찍은위치로 돌아간후에 Wire shark를 들어가서 http를 검색후 통신하는것들을 보면은

 

와이어샤크의 굉장히 중요한기능을 FlowStream? 을 누르면 관련된 통신을 전부 쉽게 보여줌

 

이것을 통해서 보면은 rentcartoday.com 이라는 사이트에 감염신호를 보낸다는것을 알수있고

 

커멘드엔 컨커라고해서 비컨(감염신호)를 해서 어떤 신호로 해야 해당악성코드만 잡을수 있을지 생각을 해보면은

 

사이트나 도메인은 바꾸면되기에 쉽지 않지만 머라머라 했었는데 잘모름

 

악성코드 만들어보기

 

Quaser > 악성코드를 만들수있음

 

명령을 내리려면 127.0.0.1(자기 자신) 써바일런스는 키로깅기능이있고 이것을 키는것으로 시작

 

자기자신을 저격하는 악성코드
악성코드가 보내는 신호 읽기
여러가지기능
키로거 기능을 활성화시켰기에 입력된것이 전부 드러남

 

 

대부분의 악성코드들이 이런식으로 만들어지고 오픈소스이다보니 조금만 수정하면 유포가능함

 

이런프로그램들도 많다고함

 

 

악성코드를 만드는것을 이런식으로 보았고

 

악성코드가 실제로 어떤식으로 유출되는지를 확인해보면 이메일로 첨부하는거는 기본적인것이고

 

드라이어 ? 드라이버? 다운로드라는 ? 것을 해서 유출을 할수있다고 함

 

결국에는 힙스프레이라고 메모리?? 어쩌구저쩌구 해서 안될수도있아고함

 

 

악성코드사이트에서 유출되는경우 Dirve by 방식 유출

 

Drive By 시험사이트의 다운로드
악성코드 감염
Wire Shark로 확인후(어떻게 이렇게 바로찾는지는 모르지만 TCP인것은 맞는것같구.. 잘모르겠다)
GET 으로 특정 html을 불러온다는걸 알수있음
해당 사이트로 접속해보니 악성코드사이트와 동일한증상
해당 사이트의 소스코드를 보니까 exe로 확인됨 이것은 분석되었기에 이런식으로 나오는것이며 원래 분석이 안되면 이런식으로 확인이 불가능함

 

Drive-By를 이용한 사이트 공격이다. Explorer구버젼만 되고 크롬은 보안때문에 걸러지기 때문에 불가능하다.

 

코드에 대해서 조금 설명을 하자면 주석을 전부 달았지만 자바버젼이 특정버젼일경우 취약점이 전부 다르기에 

 

취약점에 해당하는 클래스파일을 제공받아 그런것을 이용해서 자바 취약점 공격을하고

 

IE취약점, 자바 취약점, 플래쉬 취약점등 여러가지 버젼에 맞게 구성되어있다.

 

플래쉬라는게 요새는 못쓰게 하는 트렌드(취약점이 은근히 많아서)

 

악성 html.txt
0.01MB


대에충 이런식으로 되었다. 나도 봐도 뭔지 모르지만 주석처리로 설명이되어있다.

 

 

SELKS

 

요즘 보안에서 Suricata Elaticsearch(DB,부분유료화) Logtash Klbana Scirius EveBox 를 합친거? 

 

Elaticsearch가 중요한건 mysql같은거는 db를 한번 생성하면 테이블 용량 자체늘리기가 힘든데 똑같은 db를 스케얼러블(?)을 

 

하면 db를 붙혀서 db용량을 늘릴수있고 입력도 초당 4TB?를 한다고함

 

특정 문자를 저장을할때 파일의 인덱스를 기준으로 줄을 새우고 저장해서 고속을 지원하는게 유신?루신?이라고함

 

Logtash는 올라오는 로고들을 고속으로 수정해서 Elaticse에 넣어주는것, 로그를 가공해주고

 

Klbana는 비쥬얼화 해주는것 데이터를 비쥬얼화하는것은 굉장히 좋은기능임

 

Scirus?는 vi로 수정해야되는것을 웹?으로 제공? 잘모르겠음

 

EveBox 특정이벤트를 보여주는것인 Klbana로 대체가 가능하다고함

 

여하튼 이런것들 합쳐놓은거? 인가 하는거라고 생각이듬

 

처음에 Firsttime을 실행시키면 Root아이디 넣고 하면 바로 시작이 됨

 

Suricata는 모든 트래픽을 감지하는것이기 때문에 ems33을 넣어야된다고함(왠지 잘몰름)

 

패킷을 저장할지는 시간이 없어서 넘겼음

 

그리고 뭘 설정하고 Setup RUS? 를 실행하면은 뭘해야됬는데 이미 다되어서 교수가 너무 빨리되어 당황후

 

거의 몇분만에 IDS+볼수있는도구까지 만들었다고함(뭐하는지 잘모르겠는데)

 

ip를 확인후에 시리우스 아이피 확인후 웹서비스가 운영되는상태라고 하는게 내가 예상하기에 서버가 구축된걸로 예상

 

이됨 default 아이디 패스워드?는 구글링 하면 나온다고함

 

여하튼 이런식으로 IDS를 구축하고 웹사이트를 들어갔고 키바나 dashboard로 확인하면 네트워크 트래픽이 어떻게 발생

 

되고 어떻게 되가는지 전부 확인을 할수있음.

 

키바나에서 검색하는거를 보여주는 교수님이 이벤트에서 이벤트타입의 키워드라는게 노 에스퀴엘이다보니까 조금 다른

 

데 IDS에서의 의미해서는 프로토콜을 본다는것? 도대체 이게 무슨말인가...

 

IDS를 구축하는것도 구축하는것이지만 여하튼 IDS를 간단히 구축한다는것을 보여주었음

 

알랄트(?)(alert?)를 하나 띄어본다고함 아마 위협신호를 띄우는것같음 (알랄트가 위험이라는것같음)

 

그러기위해서 defualt 룰을 들어가서 어떤것이 있는지 확인후( default 룰을 쉽게 볼수있는것도 장점이라고함)

 

여하튼 그리고 룰셋을 하나 만들음 ICMP(ICNP?)를 탐지하는 룰을 만들음 그리고 업로드시킴

 

test로 하여서 만들었는데 sid를 안넣어도 된다고 했는데 넣어야됬음 그래서 다시 sid를 넣고선 submit하여서 성공적으

 

로 룰을 업로드시킴(룰코드가 어긋나면 제출불가)

 

이렇게 해서 하면은 ICMP프로토콜에 대하여 전부 alert를 띄우는 룰을 형성시킴

 

그래서 suricata가 어떤것을 보는지에 대하여 만들은 rule을 다시 알려줘야지 suricata가 알게되면서 작동하게됨

 

이렇게 하구선 icmp (핑?)을 보내보면은 alert가 나와야되는데 안나왔음

 

vmware랑 호스트랑 NOT로 번역을 해서 가기때문에 이거를 수정? 그냥 직접?하면

 

icmp alert에 뜨는것을 확인할수잇음 이런식으로 탐지규칙을 작성할수있음

 

그러면 이제는 네이버로 가는것을 막아보는것을 해보겠는데 https로 되어있기 때문에 https는 불가능한데

(https는 암호화가 엉청나기 때문에)

그렇지만 가능한 방법이 있는데 두가지가있다.

 

1. 네이버 도메인에 대한 ip를 탐지

 

2. 네이버가 가지고있는 인증서(지문)(특정한 아이디값)를 탐지규칙에 넣어서 탐지

 

이중에 1번째를 해본다면

 

룰을 어떻게 만드느냐를 물어본다면 selks는 opensource로 룰 샘플들이 굉장히 많음 그러면 여기서 dns를 rules을 검색

 

하면 여러가지 룰을 확인후 찾은것을 룰로 생성하고선 (지식 필요,약간의 코드변경필요)(여기서 컨텐츠 탐지규칙을 찾아서 복붙)

 

rule을 만들때에는 최적화도 굉장히 중요하다고함.

 

컨텐츠를 복붙했으니 content: 부분에 "naver.com" 을 넣고 필요없는 부분을 지우고 sid : 311 (기존꺼) ,sid : 312로 만들

 

고선 룰을 아까와 같은방식으로 추가하고 submit하면 룰셋이 이상이 없는지 검사하고선 alert로 naver.com인것은 잡고

 

선 ruleset을 suricata 에 다시 로드하면 정상적으로 룰규칙이 생성되었음

 

이렇게 하고선 naver.com 을 들어갈경우 alert로 naver.com 이 들어간경우를 확인해봤는데 alert에 알람이 안와서

 

교수님이 당황하시구 다시 코드를 들어보면

 

naver.com을 탐지하는 룰을 만들었는데 탐지가 되야되는데 탐지가 안된걸 보니 소스가 53이고 컨텐츠가 naver.com

 

인것을 하면 ?(이것이 왜 소스가 53인지는 모르겠고 어떤 코드를 any로 바꾸고 만들었음

 

근데도 불가능했음, 왜냐하면 naver.com은 

 

슈리카타는 모든 프로토콜에 기록을 해놓는기에 이걸 확인후 naver.com을 보니 외부에서 들어오는걸로 보니

 

내부 외부 <-> 외부 내부를 바꿨지만 dns쿼리를 한번 이미 했기때문에 두번은 안하기에 수정해도 하면 안된다고 함.

 

여하튼 이런식으로 하면 naver.com에대한 alert를 생성할수 있다고함

 

 

 

GHIDRA

 

는 악성코드 하나를 열면 악성코드에 대한 모든설명을 쉽게 영어로 설명해주고 자동으로 파싱해서 보여줌 

 

근데 더 강력한기능은 function move usb 등 어셈블리언어를 보면은 사람이 이해하라고 만든언어는 아니기에 

 

보면은 어려운데 근데 교수님이 이거를 까먹으셨나 그냥 익숙한 프로그램으로 보여주신다고함

 

그 프로그램이 300만원하는 소프트웨어인데 IDA라고함 IDA의 가장 강력한 기능은 

 

asseassembly to c 라는 기능으로 어셈블리를 c언어로 변경하여 코드를 쉽게 읽을수 있음

 

GHIDRA에도 들어가있음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments