Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
Table of Contents
• Java applet malicious code Packet Analyze
• Shell code Packet Analyze
• Web hacking Packet Analyze
2
자바 애플릿 악성코드 패킷 분석 Java applet malicious code
Packet Analyze by wireshark
Java applet?
• 자바 언어로 작성된 소프트웨어 애플릿 이라고 명명
• 크기가 작아서 네트워크 전송에 적합
• World Wide Web 을 사용하여 배포 가능
• 자바 애플릿은 사전에 컴파일하여 웹 서버에 등록
• 웹에서 사용하는 표준 데이터 형식인 HTML로 작성한 문서에
애플릿이라는 태그를 사용하여 자바 애플릿을 지정
• 자바 애플릿을 동작시키는 데는 자바 가상 머신을 내장한 웹
브라우저가 필요
• 브라우저는 불러내 온 문서 속에 애플릿이라는 태그가 있으면,
지정된 자바 애플릿을 웹 서버로부터 내려받아 실행
• 최근에 애플릿을 이용하여 사용자에게 악성코드를 감염시키는
사례가 발생하고 있다.
• 웹 페이지에 숨겨진 자바 애플릿을 통해 악성코드가 감염되는 과정과
해당 코드를 분석하는 과정을 수행
4
Java applet malicious code analyze
• Chapter_12.pcap [statistics] [conversations]
5
Java applet malicious code analyze
• [Follow Stream]을 통해 각 세션 별 분석
6
1st session
• function ararata(reem, aanpry){
reem.replace(/r00ts/g,aanpry)
}
7
2nd session
• HTTP를 암호화한 HTTPS(암호화 상태라 내용 無)
8
3rd session
• 특정페이지에 접속을 시도(서버는 존재하지 않는 페이지로 응답 404
error)
9
4th session(1/6)
• 자바 실행파일인 sdfg.jar 를 요청하여 다운
10
4th session(2/6)
• Sdfg.jar 파일을 추출해 내기 위해 ~PK(시그니처) 윗 부분 제거 후
저장
11
4th session(3/6)
파일 역할
Applet.class Data 및 cc라는 파라미터 값을 외부에서 입력받고, 두번째 클래스인 LoadX.class를 로딩하는 역할
LoadX.class 전달받은 data와 cc라는 파라미터를 PX,class로 전달하고,
PX.class를 로딩하는 역할
PX.class
전달받은 data는 악성코드가 존재하는 도메인을 cc는 악성코드
개수를 의미하며, 해당 값을 이용하여 사용자의 임시디렉토리에
악성코드 exe를 다운로드 시키는 역할
12
*각 클래스 파일은 JAD로 디컴파일 하여 본다.
4th session(4/6) - Applet.class
• getParameter는 사용자로 부터 입력받기 위한 함수이며, 입력받은
data와 cc값을 LoadX클래스의 bootstrapPayload로 전달
13
4th session(5/6) - LoaderX.class
• bootstrapPayload 메소드의 파라미터 string s, string s1은
Applet.class에서 전달되온 data 및 cc 값이 전달
• Inputstream으로 /myf/y/PX.class 파일을 read
• data 및 cc 파라미터 값을 PX.class로 전달
14
4th session(6/6) - PX.class
• System.getProperty(“java.io.tmpdir”)를 통해 c:\windows\tmp\ 밑에
악성코드 생성
• 악성코드는 Runtime.getRuntime().exec()를 통해 실행
15
5th session
• 자바실행파일인 q.jar를 다운 후 추출(추출과정 동일)
16
5th session -
17
• Save as를 통해 추출한 파일을 HxD를 통하여 시그니처
앞부분은 제거한다.
• .JAR파일의 압축을 푼다.
• JAD(자바 디컴파일러) 로 open한다.
파일 역할
Main.class 사용자의 OS 및 자바버전 확인 및 파라미터, s, s1, s2
를 ApplicationPanel로 전달하는 역할
AppletPanel.class Data 및 cc라는 파라미터 값을 외부에서 입력받고, 두번째 클래스인 LoadX.class를 로딩하는 역할
5th session – Main.class
• 파라미터 s, s1, s2를 ApplicationPanel.class로 전달
18
6th session
• MZ는 exe파일의 Magic Number(4D 5A)
• UPX로 패킹되어 있음을 알 수 있음
19
자바 애플릿 악성코드 패킷 분석 Java applet malicious code
Packet Analyze by NetworkMiner
NetworkMiner
21
NetworkMiner
1. GET / true.php 접속
2. GET / xxx.xxx 자바스크립트 함수가 보임
3. HTTPS 접속 접속
4. GET /favicon.ico 접속 그러나 404 리터
5. GET / sdfg.jar sdfg.jar 다운로드
6. GET /g.jar g.jar 다운로드
22
NetworkMiner
7. GET //loading.php?spl=javadnw&j050006010 file.exe 다운로드
8. GET //loading.php?spl=javad0 HTTP/1.1 file.exe 다운로드
9. 444번 포트로 접속
10. GET /11111/gate.php 접속
23
NetworkMiner
• true.php.html을 선택 후 [open folder]
24
NetworkMiner – true.php.html
• Line 3 자바스크립트로 특정 페이지를 호출(xxx.xxx)
• Line 15 난독화 QYDCtrO3jhsZAwQE = eval
• Line 16 난독화 FMsXHWkm3otEzXWe = unescape
25
NetworkMiner – true.php.html & xxx
• Var aglavand = ararata(bbsa, VsSdAy);
• Aglavand = unescape(aglavand);’);
• reem.replace(/r00ts/g,aanpry) reem.replace(/r00ts/g,%)
26
• True.php.html에 담겨 있는 인코딩 된 코드
27
NetworkMiner – true.php.html
• “r00ts” 문자열을 %로 변환
28
NetworkMiner – true.php.html
NetworkMiner – 인코딩된 코드 디코딩
• 해당 코드를 2회 디코드(http://meyerweb.com/eric/tools/dencoder/)
• 클래스 ID 확인 PDF관련 버전조건에 따른 분기 (http://nrtjo.eu에
접속하는 코드)
29
NetworkMiner
• QYDCtrO3jhsZAwQE('v'+'ar p'+'w'+'dzra'+'a =
d'+'oc'+'um'+FMsXHWkm3otEzXWe('%65%6e%74'));
eval('v'+'ar p'+'w'+'dzra'+'a = d'+'oc'+'um'+unescape('%65%6e%74'));
eval('v'+'ar p'+'w'+'dzra'+'a = d'+'oc'+'um'+ent);
var pwdzraa = document
• pwdzraa.write('<'+'s'+FMsXHWkm3otEzXWe('%63%72%69%70%74%3
e'));
document.write ('<'+'s'+unescape('%63%72%69%70%74%3e'));
document.write ('<'+'s'+cript>);
• pwdzraa.write('v'+'ar kkrzbF2Lwtu8qLL0 =
FMsXHWkm3otEzXWe(ag'+'la'+'va'+'nd);
• QYDCtrO3jhsZAwQE('+'kkrzbF2Lwtu8qLL0);</s'+'c'+'ri'+'p'+'t>');
30
NetworkMiner
• pwdzraa.write('v'+'ar kkrzbF2Lwtu8qLL0 =
FMsXHWkm3otEzXWe(ag'+'la'+'va'+'nd);
document.write(‘var kkrzbF2Lwtu8qLL0 = unescape(aglavand);
• QYDCtrO3jhsZAwQE('+'kkrzbF2Lwtu8qLL0);</s'+'c'+'ri'+'p'+'t>');
eval(kkrzbF2Lwtu8qLL0);</script>’);
결과적으로 이런 코드 가 됨
<script>
var aglavand = ararata(bbsa, VsSdAy);
aglavand = unescape(aglavand);
var kkrzbF2Lwtu8qLL0 = unescape(aglavand)
eval(kkrzbF2Lwtu8qLL0);</script>’);
</script>
31
NetworkMiner – true.php.html
• kkrzbF2Lwtu8qLL0는 aglavand 즉, ararata() 함수를 실행하는 코드임
• 해당 함수를 통해 얻은 정보는 PDF 버전에 따라 nrtjo.eu로
접속한다는 사실도 알 수 있음
그러나 웹 사이트 접속흔적에는 http://nrtjo.eu//pdf.?spl=ie 접속 흔적이
없으므로 PDF 버전에 해당 조건에 맞지 않음을 알 수 있음.
• Sdfg.jar, q.jar 은 true.php에서 발생
32
NetworkMiner – q.jar(main.class)
• 두번째 applet의 16진수 형태로 보이는 부분 분석
• q.jar의 main.class 내용
• Hex to Ascii 변환(http://www.asciitohex.com/)
687474703a2f2f6e72746a6f2e65752f2f6c6f6164696e672e706
8703f73706c3d6a617661646e7726(16진수)
http://nrtjo.eu//loading.php?spl=javadnw&(ASCII)
33
Summary (1/2)
• 최초 ture.php에 접속 해당 페이지에는 xxx.xxx 자바스크립트
함수가 포함된 페이지를 호출
• #1 PDF 조건 x 실패
• #2,3 코드에 접속
34
Summary (2/2)
• True.php에 의해 sdfg.jar와 q.jar를 다운
• Jar 파일을 통해 2개의 경로에서 악성코드 file.exe를 다운
- http://nrtjo.eu/loading.php?spl=javadnw&J0500006010
- http://nrtjo.eu/loading.php?spl=javad0
• 악성코드는 file.exe 를 통해 원격지 서버의 444번 포트로 접속했을
것으로 추정
35
압축파일에 대한 바이러스 테스트
Virus Test in Compressed File
Virus Test in Compressed File(1/3)
• 정상적인 프로그램을 UPX유틸로 압축하여 바이러스 여부를 평가할
수 있는 사이트에서의 반응 확인
• Notepad.exe 파일을 upx.exe가 잇는 위치로 복사
• upx –o [패킹할 파일명] [패킹대상 파일]
37
• Virus total 에 접속 후 upx-notepad.exe 파일 스캔
38
Virus Test in Compressed File(2/3)
• 일부 스캔 결과 악성으로
평가 되기도 함.
39
Virus Test in Compressed File(3/3)
쉘코드 패킷분석 Shellcode Packet Analyse
Shell code
• In computer security, a shellcode is a small piece of code used as
the payload in the exploitation of a software vulnerability.
• It is called "shellcode" because it typically starts a command
shell from which the attacker can control the compromised machine,
but any piece of code that performs a similar task can be called
shellcode.
• Because the function of a payload is not limited to merely spawning
a shell, some have suggested that the name shellcode is
insufficient.
• Shellcode is commonly written in machine code.
• 쉘코드의 역할을 메모리의 특정공간의 시스템 명령을 상주시키고,
EIP 값 등을 변조하여 원하는 주소로 분기하고 시스템 명령을
실행하는 것
• 패킷내에 포함된 쉘코드를 어셈블리어 코드로 변환하여 분석 진행
41
42
1st session
• GET 방식으로 update.alyac.co.kr:6969로 접속
– 알약의 패턴업데이트 요청으로 보임
43
2nd session
• 이것 또한 알약 업데이트 관련
44
3rd and 4th session
• [SYN] 요청은 있으나, 서버응답은 없음
45
5th session
• 윈도우 쉘 cmd.exe 문자열 확인 가능
• Hex 값 90 은 NOP를 의미 보통 버퍼 오버 플로우 공격시 공격
문자열의 길이를 맞추기 위해 사용
46
5th session
47
• 어셈블리어 코드로 변환하기 위한 0x, 쉼표, 공백 제거
48
• Hex 어셈블리어 코드(시그윈에서 shellCodeDecode.pl을 통해)
– ./ShellCodeDecode.pl < attack.txt > output.txt
• 바이너리(실행파일)코드를 어셈블리 코드로 변환(ndisasm)
– Ndisasm –b output.txt | more
49
Jmp ShellCode
StackExcute
{
WinExec()함수 실행
ExitProcess()함수 실행
}
ShellCode
{
Call StackExcute
Cmd.exe /c calc.exe
}
1 2
1
2
Jmp ShellCode 명령을 통해
ShellCode() 함수로 이동
stackExcute()함수 호출
WinExec()와 ExitProcess()를
통해 계산기 프로그램을 실행
하고 종료
웹 해킹 패킷분석 Web hacking Packet Analyze
• 웹해킹은 웹사이트 취약점을 공경하는 기술적 위협으로 웹 페이지를
통하여 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴하는
행위를 일컫음.
• 검색엔진을 이용한 정보유출과 웹 애플리케이션 프로그램 취약점을
이용한 해킹 등이 있음.
• 포트스캔 및 웹 해킹에 사용되는 여러 접속 패턴에 대한 성공여부를
판단해 보는 방법 학습
51
• [statistics]-[Conversations]-[port B]로 정렬
• 다양한 포트에 차례대로 접근 포트스캔 흔적
52
• 필터링 정책 만들기(Expression 버튼 클릭)
• 직접 입력도 가능
53
80번 포트를 제외한 포트스캔 성공대상 분석
• tcp.dstport != 80&tcp.srcport != 80
– 80번 포트를 제외한 포트 검색을 위해 목적지, 발신지 포트에서 80 제외
• tcp.flags.syn == 1 && tcp.flags.ack == 1
– TCP 포트스캔 접속의 성공은 3 way handshaking 과정이 있어야 함
– Syn 과 ack 플래그 정보를 입력
tcp.dstport != 80&tcp.srcport != 80 && tcp.flags.syn == 1 &&
tcp.flags.ack == 1
결과 무 포트 스캔은 실패로 간주 할 수 있음.
54
80번 포트를 제외한 포트스캔 실패 분석
• 오픈되어 있지 않은 포트 접속시 TCP에서는 RESET과 ACK
플래그를 세팅하여 응답함
• tcp.dstport != 80&& tcp.flags.reset == 1 && tcp.flags.ack == 1&&
tcp.srcport != 80
• 모든 포트 접속 거절
55
80번 포트 공격 유형 분석
• tcp.dstport == 80 || tcp.srcport == 80
56
80번 포트 공격 유형 분석
• 공격 유형확인 [Analyze] – [Expert Info Composite]
57
Chat (grey) : 플래그를 가진TCP
Note (cyan): HTTP 404와 같은 에러정보
Warn(yello): 연결문제와 가은 비정사적인 정보
Error(red): 손상된 패킷 정보
• 324번 라인의 공격문자열은 GET /..%5C..%5C..%5C..
58
References
• 최경철, “Network Packet Forensic”, Secubook
• “바이러스 토탈”, Virustotal.org
Q & A