정보보안 스터디 - 19주차 6일 - 드롭퍼, 파일리스 악성코드 (+보완)
☞ 악성코드의 종류 보완
웜
사용자의 시스템만 감염되는 것이 아니라 네크워크로 다른 시스템까지 감염시킵니다.
다운로더는
그 자체로는 영향을 주는 것은 없지만
공격자의 웹서버에서 악성파일을 다운받아 실행시키는 api를 사용함으로써 위험한 것입니다.
실제로 IDA 정적분석 또는 ollydbg 동적분석을 해보면
loadlibrary라는 함수로 가져오고
urldownloadtofile로 파일다운로드 후
WinExec라는 함수로 실행시킵니다.
아주 간단하죠
이 때까지 코드가 간단하고 공격이 아주 쉽기 때문에
오랫동안 사용해오고 악용되어지는 악성파일입니다.
드롭퍼는
PE파일안에 PE파일이 숨어있습니다.
같이 실행되거나 떨궈진 후 실행되는 방법이 있습니다.
생각보다 함수가 많고 코드는 복잡합니다.
간단하게 설명하자면(예를 들어 메모장 파일을 드롭할 것입니다. )
드롭퍼를 실행을 시키면
시스템의 Temp파일을 찾고(win이라도 OS버전마다 다르기 때문에 이름으로 찾는 듯 합니다.)
그 Temp파일에 임시파일을 생성합니다.
또한 test.exe라는 빈 파일을 생성합니다.
빈파일에 인자값을 넣습니다.
파일 크기 bytes나, 내용 등을 넣습니다.
그런 후 closehandle 함수까지 실행해주면 메모장 실행 파일이 생성됩니다.
createprocess~ 실행까지 시키는 함수까지 진행하고 나면 메모장이 실행됩니다.
이걸 보면 드롭퍼가 안에 있는 PE파일을 그대로 놓아주는 방식이 아니라는 것을 확인할 수 있습니다.
PEview에서 분석해보면 드롭되는 파일은 리소스 부분에서 시작되기 때문에
원래 리소스 해커는 리소스 부분만 나오기 때문에 드롭퍼를 업로드한 후
저장하면 바로 메모장을 실행시킬 수 있습니다.
참고로 드롭퍼는
정적 검사를 했을 때 리소스 영역에서 안에 파일이 있다는 것을 탐지할 수 있습니다.
참고로 dropper의 경우에는
새로운 파일을 실행하거나 분석하는 건
기존 드로퍼 파일을 완벽히 분석을 끝내고 하는 게 맞습니다.
파일리스
PE파일 형태가 아닙니다.
악성코드일 뿐이고 코드 자체가 메모리 올라가기 때문에
메모리 올라간 상태에서의 분석은 더 까다롭습니다. (파일이 존재하지 않아 IDA, olly로 분석을 못합니다.)
아마 일부로 실행파일로 만들어서 정적 분석해보면 될 것 같긴 합니다.
보통 공격자들은 한글, 워드, 파워포인트 등 문서파일에 스크립트코드를 넣고 사용합니다.
스크립트를 넣을 수 있는 매크로라는 기능이 있기 때문에 이걸 잘 활용합니다.
bat은 cmd창(콘솔창)을 띄워 윈도우 명령어를 실행시키는 파일입니다.
bat에서 PowerShell을 실행시키고 파워쉘 명령어를 쓰면 파워쉘 악성코드가 실행됩니다.
그래도 현재는 문서안에 악성코드는 잡는 단계에 이르렀습니다.
파워쉘 코드를 확인해보면
다운로더와 매우 유사합니다.
하지만 웹사이트에서 파일이 아닌 악성코드를(메세지박스) 받아오고
메모리에 올려 메세지박스를 실행합니다.
+) 파워쉘
MS 시스템 관리하기 위해 만들어진 명령어 기반 및 쉘 스크립트 언어입니다.
cmd와의 차이점이 뭘까요?
모두 명령 실행, 시스템 유지 관리, 작업 관리를 위해 설계된 명령어 언어이지만 명령 프롬프트를 더 개선시킨 버전이라고 생각하면 편합니다.
cmd로 할 수 있는 모든 작업을 파워쉘로 할 수 있습니다. 관리 자동화, 원격 명령 실행, 복잡한 명령 실행, 관리가 가능한 장점이 있기 때문에 사용하는 겁니다. 또한 C# 프로그래밍 언어를 지원합니다.
리눅스는 애초에 지원했지만 윈도우는 늦게 시작해서 vista 이후로 지원하게 됩니다.
주요 명령어들을 알아두면 좋습니다.

파워쉘을 실행시키는 코드는
파일리스로 문서 파일에 매크로 기능으로 넣고 많이 사용합니다.
지금도 활발히 사용하고 있는 방법입니다.
이 다운로더 역할을 하는 bat파일의 스크립트를 그대로 매크로에 넣으면 똑같이 실행됩니다.
스케어웨어
피해자 시스템이 감염된 것처럼 조작하여 유료 백신 설치를 유도합니다.
☞ dll 기능
adavpi32.dll 에서
시작프로그램으로 등록하는 방법은

공격자가 좋아하는 RUN경로에 레지스트리 값 설정 말고도
윈도우 서비스 관리자가 있습니다. 서비스를 실행하면 나오는데
여기에 드롭퍼가 임의의 경로(Temp)에 파일을 놓으면 그 경로를 지정하고 시작프로그램으로 등록하도록 하면 됩니다. (자동)
예약된 시간에 실행할 수 있는 기능이 있기 때문에 여러 대의 봇넷에서 TCP Syn을 반복적으로 보내게 한다면 그게 바로 봇넷을 이용한 DDOS가 되는 겁니다.
wininet.dll은
정확히 대부분 웹브라우저를 열어 http(.com) 주소로 연결 시키는 역할을 합니다.
☞ 악성코드 분석 단계(과정) 보완++
기초 정적 분석
다운로더에 대해서 다시 한번 제대로 분석해보는 시간을 가지겠습니다.
1. 처음에 hashcal 계산기를 이용하여 MD5, SHA1, SHA2 등 여러 해쉬값을 계산합니다.
계산해서 저장해두는 이유는
분석을 하다가 실행시키거나 파일을 건들여야하는 경우도 있을 텐데
분석 후에 파일이 변조되거나 변형될 경우를 대비해서
그럴 경우에는 해시값이 변할겁니다.
실행만 시켜서 변하지 않았을 거라고 생각할 수도 있지만 파일 변형이 되었는지 정확한 확인을 위해서 해시값을 실행 전 / 후로 비교합니다.
2. 패킹 여부 확인
exeinfo로 넣어서 패킹, 프로텍트 여부를 확인합니다.
되어있다면 언패킹을 해야 분석을 진행할 수 있습니다.
3. PE파일 분석
dependency walker 와 PEView를 실행하여
IAT정보(dll과 api 구성)을 확인한 후


그 다음에
4. strings 문자열을 확인하는 것입니다.
물론 virustotal이나 다른 도구에서도 strings문자열이 잠깐씩 나오지만
실제로 누락이 많이 되고, 누락될 위험이 있기 때문에
제대로 나오는 건 strings을 사용하는 것이 좋습니다.
cmd창에서 strings downloader.exe > downloader.exe.txt 로 출력재지정합니다.
확인해보면
여러 api함수들이 기본적으로 보여지고
메모장 test.exe 파일을 BIN 형식으로 가져오는 것을 볼 수 있습니다.
이부분이 주목할만합니다.
2단계에서 얻은 api와 dll 정보와 3단계의 문자열을 비교하면서 맞춰보는 겁니다.
문자열로 더 자세한 정보를 얻을 수 있습니다.
5. virustotal

처음 메인은
알약, 안랩 등에서 트로이목마/다운로더 등 종류가 뜹니다.
그 외로 확인할 수 있는 디테일 정보는
해시값이나
dll, api정보
제작날짜
드롭된 파일
여기서도 꽤나 상세하게 나옵니다.
6. PEstudio
pestudio는 이전 포스팅에서 말씀드렸듯이
virustotal을 포함한 윗 단계 전체 분석을 종합적으로 해주는 겁니다.
dll, 정보들이 기본적으로 나오구요.
중요하게 봐야될 것은
X표시 블랙리스트가 되었는지 입니다.
실제로 악성파일이 아닌 정상파일을 넣어도 뜨는걸 보면
dll, symbol함수가 무조건 안좋은 기능이 아니라
만약 악성파일이라면 이게 안좋은 기능일 것이라는 분석입니다.
기초 동적 분석

sysAnalyzer라는 프로그램을 사용하구요
60초 딜레이를 넣는 이유는 악성 파일에서 다운로드를 받아오거나
드롭퍼일 경우 파일을 생성하고 드롭하는 시간이 바로되는 실행 딱 되는 것이 아니라
몇 초 동안 지속될경우가 있기 때문에
또는 중간에 반복적으로 실행되거나 어떤 프로세스가 또 생성될 수 있기 때문에
60초 정도의 여유를 두고
어떤 프로세스가 생성되었는지 로그 기록하는 것입니다.
시작 즉시 바로 악성파일이 실행되면서 60초를 기다립니다.
60초 후에는 logging to file에서는 이 때까지 실행되는 프로세스 로그가 뜹니다.
근데 여기서 지금도 실시간으로 로그를 잡는다는 점 참고 바랍니다.
또한 중간에 다른 프로그램을 실행해서는 안됩니다.
로그에는 command line 이라던가 어디의 경로에서 프로세스가 실행되었는지가 뜨기 때문에
경과 순서대로 볼 수 있습니다.
그리고 봐야할 건 생성된 프로세스의 PID/PPID 부모, 자식관계입니다.
다운로더가 부모 > 다운된파일이 자식. 16진수를 계산해보면 정확한 PID 확인이 가능합니다.
그리고 디렉토리를 살펴보면 wireshark 패킷 캡쳐 파일이 있는데
공격자 웹사이트에서 파일을 받기 위해서 DNS연결을 하고 TCP 3way handshaking을 하고 있는 모습이 보입니다.
Procexp 로 작업관리자를 띄워
실행했을 때 다운로더는 잠깐 나타났다가 사라지지만 부모/자식 관계를 확인합니다.
(그 외로 Procmon Regshot Wireshark NetworkMiner Inetsim 등이 있습니다.)
고급 정적 분석인 IDA에서

winmain 메인함수를 분석합니다.
call이 있다면 클릭해서 분석합니다.
dll, api함수들
어셈블리 명령어
C언어 코드 작성
위주로 확인합니다.
고급 동적 분석은 ollydbg로 실시하며
명령어 하나씩 실행하며
call 함수 위주로
언제 다운로드 하는 함수가 실행되는지
언제 그 파일을 실행하는 함수가 실행되는지
위주로 하나씩 살펴봅니다.
중간중간 메모리상에 주소를 검색하여 맞게 됐는지 확인합니다.
드롭퍼에서는 리소스부분이 메모장 파일이 시작되는 부분이라 MZ로 시작되는 것을 확인합니다.
자동화 분석 도구
정적 / 동적 분석 후 마지막 단계인 자동화 도구는
사용자가 직접 분석하는 것이 아니라 자동화로 편리하게 분석해줍니다.
하지만 누락되는 부분이 있을 우려가 있고 정석대로 분석해야 하기 때문에
분석 후 마지막에 돌려보는 방법을 추천합니다.
쿠쿠 샌드 박스
예를 들어 우분투 OS에서
쿠쿠 샌드 박스를 깔고
win7OS(Virtual box)에 있는 악성파일을 분석하고 싶다고 했을 때
그 파일을 쿠쿠 샌드박스에 업로드 하면
스냅샷을 찍은 win7에서 실행시켜 분석 후에 분석 결과를 win7에 줍니다.
분석 결과를 문서화해서 깔끔하게 주기도 합니다.
하이브리드 애널리시스
온라인에서 쿠쿠 샌드 박스를 하는 것 이라고 생각하면 편합니다.
파일에 대해 기존에 분석된 정보가 있다면
그 정보를 바로 가져오고 새로운 정보라면 분석을 새로 시도해줍니다.
그래서 스크린샷도 찍어주고 PE파일의 디테일한 정보를 보여줍니다.
실제 쿠쿠 샌드 박스에서 하는 자동화 분석을 해줍니다. 시간을 두고 의뢰한다는 느낌입니다.
이것도 사실 다른 virustotal같은 데에서 가져와서 유명한 것은 다 분석해뒀습니다.
++) 추가로
인플루언서는 사회공학적 기법을 통한 틈이 훨씬 많습니다.
게임 광고인 척 exe파일을 실행해달라고 할 수도 있고,
워드나 한글, pdf 파일을 실행시키게 만들어 매크로 악성코드를 연결하거나 악성 링크를 연결하는 공격을 할 수도 있습니다. 팬 게임인 척 올릴 수도 있고
결국엔 그만큼 이메일로 해킹을 많이 당할 수 있습니다.
백신이 제대로 설치된다면 덕분에 위의 악성파일들은 탐지해낼 수 있는 것은 사실입니다.
하지만 백신에 대한 무한 신뢰는 좋지 않습니다.
앞의 virustotal에서 봤듯이 탐지가 누락되거나
루트킷(백신 탐지를 방지하는 악성코드)이 있기 때문에
백신 탐지를 충분히 우회할 수 있습니다.
