Windows에서는 기본적으로 열리는 포트
Windows는 기본적으로 5개의 포트 135, 137, 138, 139 및 445를 열어 주로 주니어 사용자의 작업을 용이하게 합니다. 즉, 필요한 설정을 하지 않고도 네트워크 통신 및 다양한 개인 서비스를 사용할 수 있습니다. 하지만 이런 방식으로 사용자가 시작하고 싶지 않거나 필요하지 않은 일부 서비스가 무작위로 시작되면 인터넷에 연결한 후 사용자가 모르는 사이에 로컬 정보가 유출됩니다. 그러므로 우리는 이러한 포트의 기능에 대해 가능한 한 많이 배우고, 포트 개방의 장단점을 따져보고, 이에 상응하는 보안 대책을 수립해야 합니다. Windows에서 기본으로 사용되는 5개의 일반적인 개방형 포트 중에서 포트 135는 가장 복잡한 용도로 사용되며 외부 공격을 일으킬 가능성도 가장 높습니다. 포트 보안을 확인하기 위해 SecurityFriday에서 개발한 "IEen" 소프트웨어를 사용하면 이 포트를 여는 것이 매우 위험하다는 것을 분명히 알 수 있습니다. IEen은 IE 브라우저를 원격으로 운영하기 위한 도구입니다. 다른 컴퓨터의 IE 브라우저에서 정보를 얻을 수 있을 뿐만 아니라 브라우저 자체를 조작할 수도 있습니다. 구체적으로는 실행 중인 IE 브라우저의 창 목록, 각 창에 표시된 웹 사이트의 URL 및 쿠키, 검색 사이트에 입력된 검색 키워드를 얻을 수 있습니다. IEen은 Windows NT4.0/2000/XP 표준 통합 분산 개체 기술인 DCOM(Distributed Component Object Module)을 사용하여 다른 컴퓨터에서 DCOM 응용 프로그램을 원격으로 작동할 수 있습니다. 이 기술은 다른 컴퓨터가 소유한 기능을 호출하기 위해 RPC(Remote Procedure Call) 기능을 사용합니다. 이 RPC는 포트 135를 사용합니다. RPC는 Windows 운영 체제에서 사용되는 원격 프로시저 호출 프로토콜입니다. RPC는 특정 컴퓨터에서 실행되는 프로그램이 원격 시스템에서 코드를 원활하게 실행할 수 있도록 하는 프로세스 간 통신 메커니즘을 제공합니다. 프로토콜 자체는 OSF(Open Software Foundation) RPC 프로토콜에서 파생되었지만 일부 Microsoft 관련 확장이 추가되어 있습니다. RPC를 사용하는 프로그램은 통신을 지원하는 네트워크 프로토콜을 이해할 필요가 없기 때문에 RPC는 프로그램 상호 운용성을 향상시킵니다. 왜냐하면 RPC에서 요청을 하는 프로그램이 클라이언트 프로그램이고, 서비스를 제공하는 프로그램이 서버이기 때문입니다. RPC 기능을 이용하여 통신을 할 경우 상대방 컴퓨터의 포트 135번에 어떤 포트를 사용하여 통신할 수 있는지 물어봅니다. 이렇게 하면 상대방 컴퓨터에서 사용할 수 있는 포트 번호를 알려줍니다. 암호화되지 않은 상태에서는 SSL로 보호되어야 할 상대방 컴퓨터의 데이터를 IEen을 이용하여 볼 수 있으며, 온라인 뱅킹에서 입력한 은행 현금카드 비밀번호 등의 정보도 직접 볼 수 있습니다. 따라서 취약점은 필연적으로 노출됩니다. 공격자는 이 취약점을 악용하여 영향을 받는 시스템에서 로컬 시스템 권한으로 코드를 실행하고 프로그램 설치, 데이터 보기, 변경 또는 삭제, 시스템 관리자 권한으로 계정 생성 등의 작업을 수행할 수 있습니다. 이 취약점을 표적으로 삼는 웜이 많이 있습니다. 이들 초기 웜은 이 취약점만을 공격해 원격 시스템을 붕괴시키는 원인이 됐다. 그러나 지난해 8월 발생한 '쇼크 웨이브(Shock Wave)'는 이 취약점을 이용해 타인의 IP 주소와 등록명을 빠르고 쉽게 통제해 더욱 개인화됐다. 또는 회사 시스템이 손상되었습니다. 이러한 위험을 피하는 가장 좋은 방법은 RPC 서비스를 끄는 것입니다. DCOM 전용 응용 프로그램의 웹 서버, 메일 또는 DNS 서버 등을 사용하지 않으면 포트 135가 닫혀 있어도 문제가 없습니다. RPC 서비스를 끄는 방법은 "제어판"의 "관리 도구"에서 "서비스"를 선택하고 "서비스" 창에서 "원격 프로시저 호출" 속성을 열고 시작 유형을 "비활성화"로 설정하는 것입니다. 속성 창( 그림 01)에서 컴퓨터를 다시 시작하면 RPC가 더 이상 실행되지 않습니다. 또한 레지스트리 편집기를 열고 "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RpcSs"의 "시작" 값을 0x04에서 0x02로 변경한 다음 컴퓨터를 다시 시작하여 적용할 수도 있습니다. 그러나 RPC 서비스를 끄면 Windows 작동에 큰 영향을 미칩니다. Windows의 많은 서비스는 RPC에 의존하기 때문에 RPC를 유효하지 않은 것으로 설정한 후에는 이러한 서비스가 정상적으로 시작될 수 없습니다.
예를 들어 클라이언트가 포트 135를 닫으면 Outlook을 사용하여 Exchange Server에 연결할 수 없습니다. 이는 분산 처리를 관리하는 MSDTC, 응용 프로그램 간의 정보 교환을 담당하는 MSMQ, 동적으로 주소를 할당하는 DHCP 등의 서비스 때문입니다. 네트워크에 연결된 컴퓨터 또한 이 포트를 사용하십시오. 동시에 Windows 시작 속도는 매우 느려집니다. RPC 서비스 종료의 단점은 매우 심각하며 일반적으로 쉽게 종료할 수 없습니다. 그러나 공격을 피하기 위해 네트워크 클라이언트는 컴퓨터에 대한 원격 로그인을 금지할 수 있습니다. 방법은 "제어판", "관리 도구", "로컬 보안 정책"을 차례로 선택한 후 로컬 보안 설정 창을 열고 로컬 정책에서 사용자 권한 할당을 선택한 후 "다음에서 이 컴퓨터에 대한 접근 거부"를 사용하는 것입니다. network' 항목에서 액세스를 거부할 개체를 지정합니다(그림 02). 모든 접근을 거부하려면 "Everyone"을 지정하는 것이 가장 좋습니다(그림 03). 회사 내에서 다른 컴퓨터가 자신의 컴퓨터를 조작하는 것을 원하지 않을 경우 DCOM을 무효로 설정하면 됩니다. 방법은 DOS 명령을 사용하여 Windows NT/2000/XP 표준에 통합된 "dcomcnfg.exe" 도구를 실행하는 것입니다. 열린 Distributed COM 구성 속성 창에서 "기본 속성" 탭을 선택하고 "이 컴퓨터에서 Distributed COM 활성화" 옵션을 취소합니다. DCOM(Distributed Object Model)은 소프트웨어 구성 요소가 네트워크를 통해 직접 통신할 수 있도록 하는 프로토콜입니다. 이전에 "네트워크 OLE"로 알려진 DCOM은 HTTP와 같은 인터넷 프로토콜을 포함하여 다양한 네트워크를 통해 전송할 수 있습니다. DCOM에 대한 자세한 설명은 /com/tech/dcom.asp에서 확인할 수 있습니다. 포트 137, 138은 상대방 Windows의 포트 137에 대한 연결 상태를 묻는 정보 패킷을 보내면 해당 컴퓨터의 컴퓨터 이름과 등록된 사용자 이름, 해당 컴퓨터가 주 도메인 컨트롤러인지, 기본 브라우저인지, 파일 서버로 사용되며, IIS 및 Samba 실행 여부, Lotus Notes 실행 여부 등의 정보를 제공합니다. 회사 내부 네트워크뿐만 아니라 인터넷에 연결된 컴퓨터도 마찬가지입니다. 상대방의 IP 주소만 알면 이 컴퓨터의 포트 137에 요청을 보내 많은 정보를 얻을 수 있습니다. 포트 137을 사용하여 통신하는 정보 패킷을 캡처하면 대상 호스트의 시작 및 종료 시간을 얻을 수 있습니다. 이는 Windows가 시작되거나 종료될 때 포트 137을 통해 특정 정보 패킷을 보내기 때문입니다. 대상 호스트의 시작 시간을 마스터하면 지난번에 언급한 IEen 및 기타 소프트웨어를 쉽게 사용하여 포트 135를 통해 상대방의 DCOM을 조작할 수 있습니다. 포트 137을 통해 각종 정보 패킷이 네트워크로 유출되는 이유는 무엇일까요? 이는 Windows 네트워크 통신 프로토콜인 "NetBIOS over TCP/IP(NBT)"의 컴퓨터 이름 관리 기능에 포트 137이 사용되기 때문입니다. 컴퓨터 이름 관리란 Windows 네트워크의 컴퓨터가 서로를 식별하기 위해 사용하는 이름을 말합니다. ——NetBIOS 이름, 실제 IP 주소를 획득하는 기능.) 통신 개체의 IP 주소를 획득하려면 포트 137에서 많은 정보 패킷을 교환해야 합니다. 포트 137 정보 패킷을 유출하는 방법에는 크게 두 가지가 있습니다. 한 가지 방법은 브로드캐스트 기능을 사용하여 동일한 그룹에 있는 컴퓨터 간의 컴퓨터 이름을 관리하는 것입니다. 컴퓨터가 시작되거나 네트워크에 연결되면 동일한 그룹의 모든 컴퓨터에 자신과 동일한 NetBIOS 이름을 사용하는 컴퓨터가 있는지 묻습니다. 쿼리를 받는 각 컴퓨터는 자신과 동일한 NetBIOS 이름을 사용하는 경우 알림 패킷을 보냅니다. 이러한 통신은 포트 137을 사용하여 이루어집니다. 또 다른 방법은 WINS(Windows Internet Name Service)를 사용하여 컴퓨터 이름을 관리하는 것입니다. WINS 서버라는 컴퓨터에는 IP 주소와 NetBIOS 이름의 조회 테이블이 있습니다. WINS 클라이언트는 시스템이 시작되거나 네트워크에 연결될 때 NetBIOS 이름과 IP 주소를 WINS 서버로 보냅니다. 다른 컴퓨터와 통신할 때 NetBIOS 이름이 WINS 서버로 전송되고 IP 주소를 요청합니다. 이 방법은 포트 137도 사용합니다. 그러한 정보를 무심코 유출하는 것은 공격자에게 친근한 방법으로 컴퓨터를 공격하는 방법을 알려주는 것과 같습니다. 이를 통해 악의적인 공격자가 포트 스캐닝을 통해 검색할 필요 없이 침입할 수 있습니다.
예를 들어 IIS 서비스가 실행 중이라는 것을 알면 이 컴퓨터에서 시작된 서비스를 쉽게 이해할 수 있습니다. 이는 침입자가 악의적인 공격을 수행하는 데 매우 편리합니다. 포트 138은 NetBIOS 검색 기능을 제공합니다. 이 기능에서는 마스터 브라우저라는 컴퓨터가 네트워크에 연결된 컴퓨터의 검색 목록을 관리합니다. 예를 들어, Windows 2000에서는 "네트워크 환경"에서 "전체 네트워크"를 선택하면 네트워크에 연결된 주변 컴퓨터를 모두 명확하게 볼 수 있습니다. 포트 138은 NetBIOS 검색 기능을 제공합니다. 이 기능은 포트 137 컴퓨터 이름 관리와는 다른 작동 메커니즘을 사용하며 주로 네트워크에 연결된 컴퓨터 목록을 표시하는 데 사용됩니다. 각 컴퓨터는 네트워크를 시작하거나 연결할 때 포트 138을 사용하여 자체 NetBIOS 이름을 브로드캐스트하고 해당 컴퓨터 정보를 동일한 그룹의 모든 컴퓨터에 보냅니다. NetBIOS 이름을 받은 호스트 브라우저는 컴퓨터를 찾아보기 목록에 추가합니다. 목록을 표시해야 할 경우 목록 표시 요청이 브로드캐스트되고 요청을 받은 호스트 브라우저는 검색 목록을 보냅니다. 컴퓨터가 종료되면 마스터 브라우저가 목록에서 해당 NetBIOS 이름을 제거할 수 있도록 시스템이 마스터 브라우저에 알립니다. 138번 포트의 정보량은 137번 포트만큼 많지는 않지만, 무시할 수 없는 보안 위험도 존재합니다. NetBIOS 서비스는 자신의 정보를 외부로 보내기 위해 주로 137번과 138번 포트를 사용한다. NetBIOS는 주로 Windows 네트워크에서 사용됩니다. Windows 2000 이상에서는 NetBIOS를 사용하지 않고 컴퓨터 이름을 관리할 수 있지만 NBT는 완전히 중지할 수 있지만 Windows 네트워크 사용의 편의성이 떨어집니다. 예를 들어 공유할 파일을 찾을 수 없습니다. . 개체 정보. 회사 내부 네트워크 환경을 기반으로 Windows 네트워크를 구축하는 컴퓨터에는 여전히 NetBIOS 서비스가 필요합니다. NetBIOS 서비스를 중지하려면 먼저 제어판에서 현재 사용 중인 네트워크 연결을 선택하고 속성 창에서 "인터넷 프로토콜(TCP/IP)" 속성을 확인하세요. "일반" 탭에서 "고급" 버튼을 클릭하고 "WINS" 탭에서 "TCP/IP를 통한 NetBIOS(S) 비활성화"를 선택합니다(그림 04). 이러한 방식으로 나중에 설명할 포트 137, 138 및 139를 닫을 수 있습니다. 참고할 사항. NetBEUI 프로토콜이 유효하면 NetBIOS 서비스는 계속 작동합니다. Windows 95에서는 NetBIOS가 기본적으로 설치됩니다. 이후 Windows 버전에서는 선택한 경우 설치할 수도 있습니다. 따라서 NBT를 중지해야 할 뿐만 아니라 NetBEUI가 작동하는지 확인해야 합니다. NetBEUI를 사용하는 경우에는 137번 포트를 닫아도 정보가 외부로 유출될 수 있습니다. 포트 139 및 445 포트 139 및 445의 주요 기능은 파일 공유 및 프린터 공유를 달성하기 위해 포트 137 및 138을 통해 IP 주소를 얻는 것입니다. 포트 139와 445의 통신 프로세스는 SMB(Server Message Block) 프로토콜을 통해 구현됩니다. 즉, DNS 서버에 있는 이름 목록 정보를 기반으로 통신이 필요한 객체를 찾는다. 개체의 IP 주소를 성공적으로 얻으면 Windows 2000 이전의 Windows 버전에서는 NetBIOS 프로토콜을 사용하여 각 컴퓨터 이름의 문제를 해결한 공유 리소스에 액세스할 수 있습니다. 통신 파트너의 NetBIOS 이름을 WINS 서버로 전송하여 IP 주소를 얻습니다. 이후 버전의 Windows에서 사용되는 CIFS는 DNS를 사용하여 컴퓨터 명명 문제를 해결합니다. SMB 통신에서는 먼저 통신 파트너의 IP 주소를 얻은 후 통신 파트너에게 통신 시작 요청을 보내야 합니다. 상대방이 통신을 허용하면 세션 레이어(Session)가 구축됩니다. 그리고 인증을 위해 상대방에게 사용자 이름과 비밀번호 정보를 보내는 데 사용합니다. 인증에 성공하면 상대방의 공유 파일에 접근할 수 있습니다. 포트 139는 이러한 일련의 통신에 사용됩니다. 이 외에도 Windows 2000 및 XP도 포트 445를 사용합니다. 파일 공유 기능 자체는 포트 139와 동일하지만 이 포트는 SMB와는 다른 프로토콜을 사용합니다. Windows 2000에서 사용되는 최신 CIFS(Common Internet File System) 프로토콜입니다. CIFS와 SMB는 컴퓨터 이름을 다르게 확인합니다.
SMB는 NetBIOS와 WINS를 사용하여 컴퓨터 이름을 확인하는 반면, CIFS는 DNS를 사용합니다. 따라서 파일 서버와 인쇄 서버가 Windows를 사용하는 회사 내부 네트워크 환경에서는 포트 139와 445를 닫을 수 없습니다. 기본 설정에서 Windows는 파일 공유 서비스를 제공하는 TCP 포트 139를 엽니다. 파일 공유 서비스가 시작되면 시스템은 대기 상태로 들어갑니다. net 명령을 사용하여 공유 리소스를 쉽게 할당할 수 있습니다. C 드라이브는 관리자 권한 없이 공유할 수 없지만, Guest 계정이 실수로 유효하게 설정되면 공격자가 C 드라이브에 접근하여 매우 쉽게 하드 드라이브를 파괴할 수 있습니다. 클라이언트가 Windows 2000 이상의 버전으로 구성된 네트워크를 사용하고 파일을 공개하지 않는 경우 이 두 포트를 닫을 수 있습니다. 앞서 언급했듯이 네트워크는 파일 공유에 포트 445만 사용하기 때문입니다. 컴퓨터 이름을 확인하는 데 DNS가 사용되므로 포트 137과 138도 닫힐 수 있습니다. 그러나 현재 상황에서는 기본적으로 모든 네트워크 시스템이 여전히 2000년 이전의 Windows 버전을 혼합하여 사용하고 있습니다. 많은 경우 파일 공유 및 프린터 공유는 일반 비즈니스에서 SMB 프로토콜을 통해 통신하기 위해 포트 139를 사용해야 하므로 포트 139를 닫을 수 없습니다. 또한 브라우징을 위해서는 포트 137~139가 필요합니다. 공용 서버는 반드시 이러한 포트를 닫아야 합니다. 인터넷의 공용 서버는 다른 문제입니다. 공용 서버에서 포트 139와 445를 여는 것은 매우 위험한 일입니다. 이 글의 시작 부분에서 언급했듯이 게스트 계정이 있고 비밀번호를 설정하지 않으면 인터넷을 통해 쉽게 파일을 훔칠 수 있습니다. 계정에 쓰기 권한이 설정되어 있으면 파일이 쉽게 변조될 수도 있습니다. 즉, 외부에 노출된 서버에서는 이러한 포트를 열어서는 안 됩니다. 인터넷을 통해 파일 서버를 사용하는 것은 위험하므로 포트 139와 445를 닫으십시오. ADSL을 사용하여 인터넷에 영구적으로 액세스하는 클라이언트 시스템에서도 마찬가지입니다. 포트 137 및 138과 마찬가지로 포트 139를 닫으려면 "TCP/IP를 통한 NetBIOS를 유효하지 않은 것으로 설정"을 선택할 수 있습니다. 포트 445를 닫으려면 다른 작업을 수행해야 합니다. 레지스트리 편집기를 사용하여 "SMBDeviceEnabled"라는 DWORD 값을 "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetBTParameters"에 추가하고 이를 0으로 설정한 다음 컴퓨터를 다시 시작합니다.