10장. 웹 서비스 공격 (Attacking Web Service) [Hacking Exposed] 웹 기획. 운영자를 위한 해킹과 보안중에서 10장. 웹 서비스 공격 (Attacking Web Service) 이무훈, 송수연 한남대학교 컴퓨터공학과 데이터베이스 실험실
목차 Part I : 웹 서비스란 무엇인가? Part II : WSDL Part III : 샘플 웹 서비스 해킹 Part IV : 웹 서비스 보안의 기본 Part V : 요약
Part I : 웹 서비스란 무엇인가?
웹 서비스란 무엇인가? [1] 웹 서비스란 웹 서비스의 구성 요소 특별한 기능을 수행하기 위해 필요한 것을 완비한 소프트웨어 구성 요소이고, 네트워크를 통하여 다른 구성 요소에 대한 관련된 능력과 정보를 공표하는 것 “An Interface that describes a collection of operations that are network accessible through standardized XML messaging” [KRnet 2002, 이규철] 웹 서비스의 구성 요소 WSDL (Web Service Description Language) UDDI (Universal Description, Discovery, and Integration) SOAP (Simple Object Access Protocol)
웹 서비스란 무엇인가? [2] 진부한 웹 서비스 아키텍처 다이어그램 Company A Request Client Internet Web App Web service server Company B Client Firewall Company A Transport Directory Company A : Web service 1 Company A : Web service 2 Company B : Web service 1 etc. Response Request 진부한 웹 서비스 아키텍처 다이어그램
웹 서비스란 무엇인가? [3] Publish Bind Find UDDI Registry Service Provider Request Publish Bind Find Description Client UDDI Registry Web Service Roles, Operations, Artifacts [자료 출처] http://www-903.ibm.com/kr/software/wbr/element/element.html
웹 서비스란 무엇인가? [4] 전송 : HTTP(S) 상에서 SOAP SOAP : 중앙 집중화된 환경과 분산된 환경에서 개별 시스템 사이의 구조화 및 유형화된 데이터를 교환하는 데 사용될 수 있는 XML 문서의 정의를 제공 XML을 기반으로 시스템 통신에 대한 메시지 정의 SOAP Version 1.2 W3C Candidate Recommendation 24 January 2003
외피, 헤더, 바디를 나타내는 SOAP 메시지의 구조화된 표현 웹 서비스란 무엇인가? [5] SOAP envelop SOAP header Header block 1 Header block 2 SOAP body Body subelement 1 Body subelement 2 <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> </soap:Envelope> <SOAP-ENV:Header> <Foo SOAP-ENV:mustUnderstand="1"> Hello! </Foo> </SOAP-ENV:Header> Header <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <tns:echoStringResponse> <Return>string</Return> </tns:echoStringResponse> </soap:Body> Body Envelope 외피, 헤더, 바디를 나타내는 SOAP 메시지의 구조화된 표현
[자료 출처] Scott Seely, SOAP, Prentice-Hall PTR 2002 웹 서비스란 무엇인가? [6] Soap listener 3 3. Soap listener가 받아 파싱과 validation을 수행 2. Soap proxy가 호출을 받아 XML request 메시지를 구성하고 전송 XML/HTTP 2 Soap proxy 1 1. Client Application에서 Remote Component를 요청 4. Soap listener가 Component를 호출 4 5. Soap listener가 결과를 받아 XML response 메시지를 구성하고 전송 6. Soap proxy가 response를 받아 파싱을 하고 결과를 Client application에게 전달 5 Client application Component 회사 A 회사 B [자료 출처] Scott Seely, SOAP, Prentice-Hall PTR 2002
[자료 출처] Scott Seely, SOAP, Prentice-Hall PTR 2002 웹 서비스란 무엇인가? [7] SOAP 장점 - 전송 측면 Firewall 친화적 특정 포트가 아닌 HTTP의 포트를 사용하기 때문에 Firewall이나 Proxy Server가 있는 환경에서도 메시지 전달 가능 Internet 확장 용이 보안측면 HTTP를 사용하기 때문에 SSL과 같은 기존의 보안 Solution 적용가능 F i r e w a l Port 80 특정 Port X [자료 출처] Scott Seely, SOAP, Prentice-Hall PTR 2002
[자료 출처] Scott Seely, SOAP, Prentice-Hall PTR 2002 웹 서비스란 무엇인가? [9] SOAP 장점 – 표현측면(Cont’d) Platform에 독립적 컴퓨터 H/W나 S/W마다 data를 표현하는 방법이 달라 이기종간Data교환이 어려웠던 문제를 XML을 이용하여 해결 기본적으로 Text형식의 data로 전송되기 때문에 별도의 encoding과 decoding 과정이 불필요 단순한 형식의 Data 뿐 아니라 구조화된 Data도 전송 가능 MIME (Multipurpose Internet Mail Extensions )을 이용하여 사진, 음성, 동영상 등의 Binary data 전송가능 [자료 출처] Scott Seely, SOAP, Prentice-Hall PTR 2002
Part II : WDSL
WSDL [1] WSDL 메시지를 교환할 수 있는 통신 종단점의 모음으로 네트워크 서비스를 설명할 수 있는 XML 문법 [W3C 규격] Web Services Description Language (WSDL) Version 1.2 W3C Working Draft 3 March 2003 Service Implementation Definition service port Service Interface Definition Binding PortType Message Type WSDL의 구조 [자료 출처] Krnet 2002, 이규철
WSDL [2] WSDL Elements <types>, <message> : 전달될 수 있는 메시지의 포맷 정의 <portType> : 전달되는 메시지의 의미를 정의 <types> <schema targetNamespace=“http://stocktrader.ecdu/stockquote.xsd”> . . . </types> <message> <part name=“body” element=“xsd1:StockPrice”/> </message> <portType name=“StockQuotePortType”> <operation name=“GetQuote”> <input message=“tns:GetQuoteInput ”/> <output message=“tns:GetQuoteOutput ”/> </operation> </portTypes>
WSDL [3] WSDL Elements (Cont’d) <binding> : 특정 전송을 통한 다양한 인코딩 지원 <service> : 서비스에 대한 종단점을 정의(URL) <binding name=“StockQuoteSoapBinding” Type=“tns:GetQuoteInput”> <service name=“StockQuoteService”> <documentation>User-readable documentation here</documentation> <port name=“StockQuotePort” binding=“tns:GetQuoteBinding”> <soap:address location=“http://stocktrader.edu/stockqute”/> </port> </service>
디렉토리 서비스 : UDDI 및 DISCO [1] UDDI (UDDI.org) 웹 서비스의 분산 웹 기반 정보 레지스트리에 대한 규격 공개적으로 비즈니스로 하여금 다른 비즈니스들이 자신을 발견할 수 있게 하기 위해 자신들이 제공하는 웹 서비스에 관한 정보의 등록을 허락하는 규격을 구현 UDDI Version 3.0 Published Specification, 19 July 2002
디렉토리 서비스 : UDDI 및 DISCO [2] Web service consumer 2. Find UDDI Company A : Web service 1 Company A : Web service 2 Company B : Web service 1 etc. 3. Bind WSDL doc Logic API 4. Use 1. Publish Web service provider UDDI, WSDL, 웹 서비스 사이의 공표, 발견, 묶음 상호 작용 모든 화살표는 SOAP 통신을 나타낸다
디렉토리 서비스 : UDDI 및 DISCO [3] Discovery of Web Services Microsoft 사의 독점 기술 .NET 서버 운영체제 및 기타 .NET 관련 제품에서 사용 가능 <disco:discovery xmlns:disco=“http://schemas.xmlsoap.org/disco/” xmlns:scl=“http://schemas.xmlsoap.org/disco/scl/”> <! - -reference to other DISCO document- -> <disco:discoveryRef ref=“related-services/default.disco”/> <! - -reference to WSDL and documentation- - > <scl:contractRef ref=“stocks.asmx?wsdl” docRef=“stocks.asmx”/> </disco:discovery>
디렉토리 서비스 : UDDI 및 DISCO [4] [Microsoft .NET Framework Software Development Kit 다운로드] http://download.microsoft.com/download/.netframesdk /Install/1.0/W98NT42KMeXP/KO/setup.exe
Part III : 샘플 웹 서비스 해킹
샘플 웹 서비스 해킹 [1] DISCO 및 WSDL 노출 http://www.victim.com/service.asmx http://www.victim.com/service.asmx?disco http://www.victim.com/service.asmx?wsdl
?disco 인자를 사용하여서 원격 서비스로부터 DISCO 정보를 덤프한다 샘플 웹 서비스 해킹 [2] ?disco 인자를 사용하여서 원격 서비스로부터 DISCO 정보를 덤프한다
샘플 웹 서비스 해킹 [3] DISCO 및 WSDL 노출 대응 방법 중요 데이터 및 개인 데이터에 대한 XML 보안 파일이 존재하는 디렉토리에 대한 인증 접근
Part IV : 웹 서비스 보안의 기본
웹 서비스 보안의 기본 [1] 웹 애플리케이션 보안과 유사성 TCP/IP 보안 수단들은 웹 서비스에 대하여 보안을 거의 제공하지 못함 HTTP 서버와 같은 하위-계층 서비스에 대해 신뢰하지 못함 웹 서비스 안에서의 부적절한 정보의 노출 및 인가
웹 서비스 보안의 기본 [2] 웹 서비스 보안 방법 인증 XML 보안 HTTP 인증 기법을 사용(웹 어플리케이션과 동일, Chapter5) 강력한 인증 메커니즘 적용 XML 보안 XML 서명 XML을 사용하는 디지털 서명에 대한 설명, 인증 제공, 메시지 무결성, XML 문서 혹은 그 일부에 대한 명세 XML 암호화 XML 문서 혹은 그 문서의 일부에 대한 암호화와 복호화를 설명
웹 서비스 보안의 기본 [3] 웹 서비스 보안 방법(Cont’d) XML 보안(Cont’d) SSL XKMS (XML Key Management Specification) 공개키 등록과 배포를 위한 메시지 및 프로토콜을 정의 SAML (Security Assertion Markup Language) 공유 인증 및 인가 정보를 위한 포맷 XACML (Extensible Access Control Markup Language) 정보 접근 정책을 위한 XML 포맷 SSL Secure Sockets Layer 네트워크를 통한 전송시, 도청이나 위조 공격으로부터 보호
웹 서비스 보안의 기본 [4] WS-Security Web Services Security Language Microsoft Corp., IBM Corp., VeriSign Inc. 제정 (2002. 4. 11) 새로운 웹 서비스 보안 규격 SOAP 메시지 안에 있는 내장 디지털 서명, 암호화된 데이터, 보안 토큰을 위한 표준 포맷을 설명
웹 서비스 보안의 기본 [5] WS-Security 메시지 수령자 메시지를 수령하여 개인키를 사용하여 3DES 키를 해독하고, 수령자의 공개키를 사용하여 암호화된 3DES 대칭 암호화키 SOAP 메시지 페이로드 부분을 암호화하는데 사용되는 암호화 키를 설명 참조된 암호화 페이로드 구성요소와 RSA 비대칭 암호법을 사용하는 메시지 수령자의 공개키를 사용하여 암호화 WS-Security 3DES 암호화된 데이터 페이로드
Part V : 요약
Part VI : 참고문헌 SOAP Cross Platform Web Service Development Using XML, PH PTR 웹 서비스, 한빛미디어 XML Web Services, 정보문화사 http://www-903.ibm.com/developerworks/kr/webservices/ KRnet 2002, 이규철
Part VII : Q & A