Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Redpoint — ICS/SCADA 검색 및 열거를 위한 Nmap NSE 스크립트—BACnet, EtherNet/IP, CoDeSys, Fox, Modicon, Omron, S7—보안 평가를 위해 프로토콜 쿼리를 사용합니다. | Kitploit
도구/GitHubGitHub/digitalbond/redpoint
ReconnaissanceSCADA/ICS SecurityInformation GatheringNetwork SecurityPenetration Testing
GitHubdigitalbond/redpoint

Redpoint

ICS/SCADA 검색 및 열거를 위한 Nmap NSE 스크립트—BACnet, EtherNet/IP, CoDeSys, Fox, Modicon, Omron, S7—보안 평가를 위해 프로토콜 쿼리를 사용합니다.

저장소 보기
4691506년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

#Redpoint

###Digital Bond의 ICS 열거 도구

Redpoint는 ICS 애플리케이션과 장치를 열거하기 위한 Digital Bond의 연구 프로젝트입니다.

우리는 평가에서 Redpoint 도구를 사용하여 ICS 장치를 발견하고 2차 테스트에 도움이 되는 정보를 수집합니다. 이 도구들 중 일부는 이 저장소에서 Nmap NSE 스크립트로 공개됩니다.

Redpoint 도구는 합법적인 프로토콜 또는 애플리케이션 명령을 사용하여 장치와 애플리케이션을 발견하고 열거합니다. 무엇을 악용하거나 충돌시키려는 시도는 없습니다. 그러나 많은 ICS 장치와 애플리케이션은 취약하여 예상치 못한 트래픽에 충돌하거나 예상치 못한 방식으로 응답할 수 있으므로 주의해서 사용하십시오.

각 스크립트는 아래에 문서화되어 있으며 이 저장소의 .nse 파일로 제공됩니다.

  • BACnet-discover-enumerate.nse - BACnet 장치 식별 및 열거

  • codesys-v2-discover.nse - CoDeSys V2 컨트롤러 식별 및 열거

  • enip-enumerate.nse - Rockwell Automation 및 기타 벤더의 EtherNet/IP 장치 식별 및 열거

  • fox-info.nse - Niagara Fox 장치 식별 및 열거

  • modicon-info.nse - Schneider Electric Modicon PLC 식별 및 열거

  • omron-info.nse - Omron PLC 식별 및 열거

  • pcworx-info.nse - PC Worx 프로토콜 지원 PLC 식별 및 열거

  • proconos-info.nse - ProConOS 지원 PLC 식별 및 열거

  • s7-enumerate.nse - Siemens SIMATIC S7 PLC 식별 및 열거

==

###BACnet-discover-enumerate.nse

![BACnet-discover-enumerate 샘플 출력] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/03/BACnet-nse.png)

####저자

Stephen Hilt 및 Michael Toecker
Digital Bond, Inc

####목적 및 설명

BACnet-discover-enumerate.nse의 목적은 먼저 IP 연결 장치가 BACnet을 실행 중인지 식별하는 것입니다. 이는 미리 생성된 BACnet 메시지로 장치를 질의하여 작동합니다. 최신 버전의 BACnet 프로토콜은 확인 응답으로 응답하고, 구버전은 BACnet 오류 메시지를 반환합니다. 확인 응답 또는 오류 중 하나의 존재는 대상 IP 주소에 BACnet 지원 장치가 있음을 증명하기에 충분합니다.

둘째, 확인 응답이 수신되면 이 스크립트는 응답하는 BACnet 장치의 여러 BACnet 속성을 열거하려고 시도합니다. 다시 장치는 미리 생성된 BACnet 메시지로 질의됩니다. 성공적인 열거는 특별히 제작된 요청을 사용하며, BACnet 장치가 해당 속성을 지원하지 않으면 성공하지 못합니다.

이 스크립트가 질의하는 BACnet 속성은 다음과 같습니다.

  1. Vendor ID - 등록된 BACnet 벤더에 해당하는 번호입니다. 스크립트는 연결된 벤더 이름도 반환합니다.

  2. Vendor Number - 장치에 구성된 벤더 이름을 나타내는 문자열입니다. Vendor ID는 ASHARE에 등록된 번호이므로 Vendor ID와 다를 수 있습니다.

  3. Object Identifier - 장치를 고유하게 식별하는 번호입니다. Object-Identifier를 알면 BACnet 클라이언트 소프트웨어로 명령을 보낼 수 있으며, 여기에는 BACnet 장치의 값, 프로그램, 일정 및 기타 운영 정보를 변경하는 명령이 포함됩니다. 이 속성은 모든 BACnet 장치에 필수입니다.

  4. Firmware Revision - BACnet 장치의 펌웨어 개정 번호.

  5. Application Software Revision - BACnet 통신에 사용되는 소프트웨어의 개정 번호.

  6. Object Name - BACnet 장치에 이름을 할당하는 사용자 정의 문자열로, 일반적으로 시운전 시 기술자가 입력합니다. 이 속성은 모든 BACnet 장치에 필수입니다.

  7. Model Name - BACnet 장치의 모델

  8. Description - 장치를 설명하기 위한 사용자 정의 문자열로, 일반적으로 시운전 시 기술자가 입력합니다.

  9. Location - 장치의 물리적 위치를 기록하기 위한 사용자 정의 문자열로, 일반적으로 시운전 시 기술자가 입력합니다.

  10. Broadcast Distribution Table (BDT) - BACnet 네트워크의 BACnet 브로드캐스트 관리 장치(BBMD) 목록입니다. 이는 BACnet 네트워크의 일부인 모든 서브넷을 식별합니다.

  11. Foreign Device Table (FDT) - BACnet 장치에 등록된 외부 장치 목록입니다. 외부 장치는 BACnet 네트워크의 일부인 서브넷에 없고 BDT에도 없는 모든 장치입니다. 외부 장치는 종종 외부 네트워크에 있으며 공격자의 IP 주소일 수 있습니다.

BDT와 FDT는 큰 목록이 될 수 있으며 대규모 Nmap 스캔에서는 바람직하지 않을 수 있습니다. 기본 스크립트는 BDT와 FDT를 가져오지 않습니다. BDT와 FDT를 가져오려면 --script-args full=yes 명령을 실행하십시오. 사용 섹션을 참조하십시오.

![BACnet-discover-enumerate BDT 및 FDT 포함 샘플 출력] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/08/screenshot_bacnet-1.png)

이 스크립트는 BACnet 네트워크에 외부 장치로 참여하지 않고 단일 요청으로 장치의 Object Identifier를 검색하기 위해 2004년 BACnet 사양에 추가된 기능을 사용합니다. (자세한 내용은 ANSI/ASHRAE Standard 135-2001에 대한 ANSI/ASHRAE Addendum a를 참조하십시오)

####역사 및 배경

BACnet에 대한 Wikipedia 기사에서 http://en.wikipedia.org/wiki/BACnet:

BACnet은 건물 자동화 및 제어 네트워크를 위한 통신 프로토콜입니다. 이는 ASHRAE, ANSI 및 ISO 표준[1] 프로토콜입니다. BACnet 트래픽의 기본 포트는 UDP/47808입니다.

BACnet은 난방, 환기 및 공조 제어, 조명 제어, 출입 통제, 화재 감지 시스템 및 관련 장비와 같은 애플리케이션을 위한 건물 자동화 및 제어 시스템에 사용됩니다. BACnet 프로토콜은 컴퓨터화된 건물 자동화 장치가 수행하는 특정 건물 서비스와 관계없이 정보를 교환할 수 있는 메커니즘을 제공합니다.

####설치

이 스크립트를 실행하려면 Nmap이 필요합니다. Nmap이 없다면 Nmap 지침에 따라 Nmap을 다운로드하여 설치하십시오. http://nmap.org/download.html

#####Windows

bacnet-discover.nse를 다운로드한 후에는 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 관리자 권한으로 수행해야 합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
move BACnet-discover-enumerate.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

BACnet-discover-enumerate.nse를 다운로드한 후에는 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
sudo mv BACnet-discover-enumerate.nse /usr/share/nmap/scripts

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 host는 BACnet을 스캔하려는 대상입니다. 출력에 BDT와 FDT를 포함하려면 --script-args full=yes를 사용하십시오.

root@kitploit:~
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate <host>
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>

Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate <host> 
Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>

스캔 중 DNS 조회를 수행하지 않아 결과를 빠르게 하려면 -n 옵션을 사용하십시오. 또한 전체 결과를 위해 -Pn 옵션을 사용하여 장치가 켜져 있는지 확인하는 핑을 비활성화하십시오.

root@kitploit:~
nmap -sU -Pn -p 47808 -n --script BACnet-discover-enumerate <host>

####참고 사항

이 스크립트의 공식 버전은 다음에서 유지 관리됩니다: https://github.com/digitalbond/Redpoint/blob/master/BACnet-discover-enumerate.nse

이 스크립트는 표준 BACnet 소스 및 대상 포트인 UDP 47808을 사용합니다.

최신(2004년 2월 25일 이후) BACnet 장치는 사양상 자체 유효 인스턴스 번호가 있는 'catchall' 객체 식별자를 사용하는 특정 요청에 응답해야 합니다(ANSI/ASHRAE Standard 135-2001에 대한 ANSI/ASHRAE Addendum a 참조). 구버전 BACnet 장치는 이 catchall에 응답하지 않을 수 있으며 대신 BACnet 오류 패킷으로 응답합니다.

이 스크립트는 외부 장치로 BACnet 네트워크에 참여하지 않으며, IP 주소 지정이 가능한 장치에 BACnet 요청을 직접 보낼 뿐입니다.

== ###codesys-v2-discover.nse ![codesys-v2-discover 샘플 출력] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2016/03/codesys-v2-discover-win.png)

####저자

Stephen Hilt, Reid Wightman

####목적 및 설명

codesys-v2-discover.nse 스크립트는 3S-Software GmbH에서 만든 버전 2 래더 로직 런타임을 실행하는 PLC를 식별합니다. 이 컨트롤러는 새 래더 로직 설치와 실행 중인 래더 로직 디버깅을 위한 독점 바이너리 프로토콜을 사용합니다. 이 프로토콜은 인증을 요구할 수 있습니다. 실제로 이 동작을 지원하는 장치는 거의 없습니다. 이 스크립트는 인증을 테스트하지 않습니다.

이 스크립트는 장치에 간단한 식별 요청을 보냅니다. 응답 메시지에는 PLC에서 실행 중인 CoDeSys의 운영 체제와 특정 포인트 릴리스가 포함될 수 있습니다.

####역사 및 배경

Digital Bond는 2012년 4월 CoDeSys 런타임 시스템이 설계상 안전하지 않다는 세부 정보를 공개했습니다. 이 프로토콜은 일반적으로 TCP/1200 또는 TCP/2455를 제어 포트로 사용합니다. 제어 프로토콜에는 컨트롤러에서 파일을 업로드하고 다운로드하는 기능이 포함되어 있습니다. 프로토콜은 추가 기능을 제공하는 명령 셸을 제공할 수도 있습니다. 셸 기능에는 일반적으로 현재 실행 중인 래더 로직을 시작/중지하고 컨트롤러에서 디버깅 정보를 검색하는 기능이 포함됩니다.

초기 권고는 런타임 버전 2에만 적용되었습니다. Digital Bond는 또한 HD Moore가 자신의 인터넷 스캐닝 프로젝트의 일부로 원래 작성한 개념 증명 Nmap 스크립트를 공개했습니다.

이 프로토콜 버전에 대한 Nessus 스크립트도 제작되었지만, Nessus 스크립트에는 오류가 있어 빅엔디언 CPU가 있는 컨트롤러를 제대로 확인하지 못합니다.

####설치

이 스크립트를 실행하려면 Nmap이 필요합니다. Nmap이 없다면 Nmap 지침에 따라 Nmap을 다운로드하여 설치하십시오. http://nmap.org/download.html

#####Windows

enip-enumerate.nse를 다운로드한 후에는 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 관리자 권한으로 수행해야 합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
    move codesys-v2-discover.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

enip-enumerate.nse를 다운로드한 후에는 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
    sudo mv codesys-v2-discover.nse /usr/share/nmap/scripts

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 는 EtherNet/IP를 스캔하려는 대상입니다.

root@kitploit:~
    Windows: nmap -p 1200,2455 --script codesys-v2-discover <host>

    Linux: sudo nmap -p 1200,2455 --script codesys-v2-discover <host>

####참고 사항

이 스크립트의 공식 버전은 다음에서 유지 관리됩니다:https://github.com/digitalbond/Redpoint/codesys-v2-discover.nse

이 스크립트는 열린 모든 포트에 CoDeSys 요청을 보내려고 시도합니다. 대부분의 컨트롤러는 표준 포트 1200 또는 2455를 사용하지만, 일부 컨트롤러는 1201, 1217 등 대체 포트를 사용합니다.

== ###enip-enumerate.nse ![enip-enumerate 샘플 출력] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/enip.png)

####저자

Stephen Hilt
Digital Bond, Inc

####목적 및 설명

enip-enumerate.nse의 목적은 EtherNet/IP 장치를 식별하고 열거하는 것입니다. Rockwell Automation / Allen Bradley가 프로토콜을 개발했으며 ControlLogix 및 MicroLogix와 같은 이러한 장치의 주요 제조사입니다. 그러나 이는 개방형 표준이며 여러 벤더가 EtherNet/IP 인터페이스 카드 또는 솔루션을 제공합니다.

EtherNet/IP 장치는 list Identities Message(0x63)로 TCP/44818을 질의하여 확실하게 식별됩니다. 응답 메시지는 EtherNet/IP 장치인지 여부를 결정하고 정보를 구문 분석하여 장치를 열거합니다.

EtherNet/IP Request List Identities는 장치의 "전자 키"로 알려진 기본 정보를 가져옵니다. 정보에는 벤더, 제품 이름, 일련 번호, 장치 유형, 제품 코드 및 개정 번호가 포함됩니다. 또한 스크립트는 패킷의 EtherNet/IP 프레임 내 Socket Address Field에서 장치에 구성된 IP 주소를 구문 분석합니다.

이 스크립트가 구문 분석하는 EtherNet/IP 속성은 다음과 같습니다.

  1. Vendor - 벤더 이름을 조회하는 데 사용되는 2바이트 정수

  2. Product Name - 제품/제품군에 대한 간단한 설명을 나타내는 문자열, 최대 길이는 32자

  3. Serial Number - 리틀 엔디언으로 저장되는 6바이트 16진수

  4. Device Type - 장치 유형을 조회하는 데 사용되는 2바이트 정수. 이 필드는 자주 사용되지 않으며 0으로 설정됩니다.

  5. Product Code - 벤더가 할당한 제품 코드는 장치 유형 내에서 특정 제품을 식별합니다. 스크립트는 벤더 제품 코드 테이블에 접근할 수 없으므로 숫자가 표시됩니다.

  6. Revision - 장치의 주 버전 및 부 버전 번호를 나열하는 두 개의 1바이트 정수

  7. Device IP - 장치에 구성된 IP 주소를 나타내는 네 개의 1바이트 정수. 이 주소는 스크립트가 스캔한 IP 주소와 다른 경우가 많습니다.

####역사 및 배경

EtherNet/IP에 대한 Wikipedia 기사에서 http://en.wikipedia.org/wiki/EtherNet/IP

EtherNet/IP는 1990년대 후반 Rockwell Automation이 Rockwell의 산업용 이더넷 네트워킹 솔루션의 일부로 개발했습니다. Rockwell은 EtherNet/IP라는 이름을 붙이고 ODVA에 넘겼으며, ODVA는 현재 프로토콜을 관리하고 오늘날 이 프로토콜을 활용하는 신제품이 개발될 때마다 기존 표준을 준수하도록 요구하여 다중 벤더 시스템 상호 운용성을 보장합니다.

EtherNet/IP는 정수 처리 공장, 제조 시설 및 유틸리티와 같은 산업 자동화 제어 시스템에서 가장 일반적으로 사용됩니다. 여러 제어 시스템 벤더가 EtherNet/IP를 통해 통신할 수 있는 프로그래밍 가능한 자동화 컨트롤러와 I/O를 개발했습니다.

####설치

이 스크립트를 실행하려면 Nmap이 필요합니다. Nmap이 없다면 Nmap 지침에 따라 Nmap을 다운로드하여 설치하십시오. http://nmap.org/download.html

#####Windows

enip-enumerate.nse를 다운로드한 후에는 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 관리자 권한으로 수행해야 합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
move enip-enumerate.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

enip-enumerate.nse를 다운로드한 후에는 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
sudo mv enip-enumerate.nse /usr/share/nmap/scripts

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 는 EtherNet/IP를 스캔하려는 대상입니다.

root@kitploit:~
Windows: nmap -p 44818 --script enip-enumerate <host>

Linux: sudo nmap -p 44818 --script enip-enumerate <host> 

####참고 사항

이 스크립트의 공식 버전은 다음에서 유지 관리됩니다:https://github.com/digitalbond/Redpoint/enip-enumerate.nse

이 스크립트는 표준 Ethernet/IP 대상 포트인 TCP 44818을 사용합니다.

==

###fox-info.nse ![fox-info 샘플 출력] (http://www.digitalbond.com/wp-content/uploads/2014/10/fox-example.png)

####저자

Stephen Hilt
Digital Bond, Inc

####목적 및 설명

fox-info.nse의 목적은 Niagara Fox 프로토콜을 실행하는 장치를 먼저 식별하는 것입니다. 이 스크립트는 Billy Rios와 Terry McCorkle이 제공한 작업과 예제를 기반으로 합니다.

Niagara Fox 장치에 성공적으로 연결되면 스크립트는 장치에서 보낸 응답을 구문 분석하고 열거된 정보를 표시합니다.

이 스크립트가 질의하는 Niagara Fox 속성은 다음과 같습니다.

  1. Fox Version - 장치에서 현재 실행 중인 Fox 프로토콜의 버전.

  2. Host Name - 장치의 호스트 이름. 일반적으로 원격 장치의 워크스테이션 이름입니다.

  3. Host Address - 장치에 구성된 IP 주소. 스캔된 IP 주소이거나 장치가 네트워크 주소 변환(NAT)을 수행하는 무언가 뒤에 있는 경우 개인 주소일 수 있습니다.

  4. Application Name - 원격 장치에서 실행 중인 애플리케이션 이름. 일반적으로 "Workbench" 또는 "Station"입니다.

  5. Application Version - 앞서 열거된 애플리케이션 이름의 버전 번호.

  6. VM Name - 애플리케이션을 실행 중인 Java Virtual Machine의 이름.

  7. VM Version - 원격 장치에서 실행 중인 VM의 버전 번호. 대부분 Java HotSpot 버전 번호일 것입니다.

  8. OS Name - 장치에서 Fox 프로토콜을 실행하는 OS의 이름(예: QNX 또는 Windows XP).

  9. Time Zone - 장치에 구성된 현지 시간대.

  10. Host ID - 장치를 식별하는 데 사용되는 고유 ID.

  11. VM UUID - Java VM 범용 고유 식별자.

  12. Brand ID - 모든 라이선스 스테이션과 도구에는 Brand Identifier가 있습니다. 이 필드는 OEM이 제품 라인 식별자로 선택한 텍스트 설명자를 보유합니다. 각 스테이션 또는 도구에는 BrandID 항목이 하나만 있을 수 있습니다.

####역사 및 배경

Fox는 Tridium 건물 자동화 솔루션의 Niagara Framework에서 스테이션 간 및 워크벤치-스테이션 통신에 사용되는 독점 TCP/IP 프로토콜입니다. Tridium은 Honeywell의 완전 소유 자회사입니다.

####설치

이 스크립트를 실행하려면 Nmap이 필요합니다. Nmap이 없다면 Nmap을 다운로드하여 설치하십시오. 참조: http://nmap.org/download.html

#####Windows

fox-info.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동하십시오. 이 이동은 관리자 권한으로 수행해야 합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
move fox-info.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

fox-info.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동하십시오. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
sudo mv fox-info.nse /usr/share/nmap/scripts

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 host는 Niagara Fox 프로토콜을 지원하는 장치를 스캔하려는 대상입니다.

root@kitploit:~
Windows: nmap -p 1911 --script fox-info <host>
	
Linux: sudo nmap -p 1911 --script fox-info <host> 

####참고 사항

이 스크립트의 공식 버전은 다음에서 유지 관리됩니다: https://github.com/digitalbond/Redpoint/blob/master/fox-info.nse

이 스크립트는 표준 Niagara Fox 소스 및 대상 포트인 TCP 1911을 사용합니다.

==

###modicon-info.nse ![modicon-info 샘플 출력] (http://www.digitalbond.com/wp-content/uploads/2014/09/Modicon.png)

####저자

Stephen Hilt
Digital Bond, Inc

####목적 및 설명

modicon-info.nse의 목적은 Schneider Electric에서 만든 Modicon PLC를 먼저 식별하고 열거하는 것입니다.

스크립트는 먼저 IP 연결 장치가 Modbus 기능 코드 43 요청을 보내는지 식별합니다. 응답은 기능 코드 43을 지원하지 않더라도 Modbus 장치를 식별하기에 충분합니다. 응답의 벤더 이름에 Schneider 문자열이 포함되어 있으면 스크립트는 Schneider Electric 독점 Modbus 기능 코드 90을 사용하여 장치를 열거합니다.

스크립트 출력에 포함된 Modbus 기능 코드 43 및 기능 코드 90 속성은 다음과 같습니다.

  1. 벤더 이름 - 이 스크립트는 "Schneider"를 포함하지 않는 모든 장치를 무시합니다.2) 네트워크 모듈 - Modicon PLC의 이더넷 통신 모듈.

  2. CPU 모듈 - Modicon PLC의 CPU 모듈.

  3. 펌웨어 - Modicon PLC의 CPU 모듈에 있는 펌웨어 버전.

  4. 메모리 카드 - CPU 모듈의 메모리 카드 모델 번호.

  5. 프로젝트 정보 - 프로젝트 이름, 구성에 사용된 Unity Pro 버전, PLC를 프로그래밍한 워크스테이션 이름 등 프로젝트에 대한 기타 정보. 일부 기기는 해당 기기를 구성한 워크스테이션의 .stu 파일 위치를 제공합니다.

  6. 프로젝트 개정 - PLC에서 실행 중인 프로젝트의 개정판. 프로젝트가 빌드되어 PLC로 전송될 때마다 프로젝트 개정 번호가 1씩 증가합니다.

  7. 프로젝트 마지막 수정 날짜 - 기술자가 PLC를 마지막으로 수정한 시점에 대해 저장된 타임스탬프.

####역사 및 배경

Wikipedia의 프로그래밍 가능 논리 제어기 문서에서 발췌 http://en.wikipedia.org/wiki/Programmable_logic_controller#History:

1968년 GM Hydra-Matic(General Motors의 자동 변속기 사업부)은 엔지니어 Edward R. Clark이 작성한 백서를 기반으로 하드와이어링 릴레이 시스템을 대체할 전자식 시스템에 대한 제안 요청서(RFP)를 발행했습니다. 매사추세츠주 베드퍼드의 Bedford Associates가 제출한 제안이 채택되었습니다. Bedford Associates의 84번째 프로젝트였기 때문에 084로 명명된 최초의 PLC가 그 결과물이었습니다.[2] Bedford Associates는 이 신제품의 개발, 제조, 판매 및 서비스를 전담하는 새 회사를 설립했는데, 그것이 MOdular DIgital CONtroller를 뜻하는 Modicon이었습니다. 이 프로젝트에 참여한 사람 중 한 명인 Dick Morley는 PLC의 "아버지"로 간주됩니다.[3] Modicon 브랜드는 1977년 Gould Electronics에 매각되었고, 이후 독일 회사 AEG가 인수했으며, 그다음 현재 소유주인 프랑스 Schneider Electric이 인수했습니다.

####설치

이 스크립트는 실행에 Nmap이 필요합니다. Nmap이 없다면 Nmap을 다운로드하여 설치하십시오.

root@kitploit:~
http://nmap.org/download.html

#####Windows

modicon-info.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동하십시오. 이를 위해서는 관리자 권한이 필요합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
move modicon-info.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

modicon-info.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동하십시오. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
sudo mv modicon-info.nse /usr/share/nmap/scripts
	

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 는 Modicon PLC를 스캔하려는 대상입니다.

root@kitploit:~
Windows: nmap -p 502 --script modicon-info.nse -sV <host>

Linux: sudo nmap -p 502 --script modicon-info.nse -sV <host> 

	

####참고 사항

이 스크립트의 공식 버전은 다음에서 유지 관리됩니다: https://github.com/digitalbond/Redpoint/modicon-info.nse

이 스크립트는 표준 Modbus 대상 포트인 TCP 502를 사용합니다.

== ###omrontcp-info.nse & omronudp-info.nse ![omrontcp/udp-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/Region.png)

####저자

Stephen Hilt
Digital Bond, Inc

####목적 및 설명

omrontcp-info 및 omronudp-info의 목적은 OMRON FINS 장치를 식별하고 열거하는 것입니다. Omron이 이 프로토콜을 개발했으며 이 프로토콜을 지원하는 장치의 주요 제조사입니다.

OMRON FINS 장치는 Read Controller Status(0x0501)로 TCP/9600 또는 UDP 9600을 쿼리하여 확실하게 식별됩니다. 응답 메시지를 통해 OMRON FINS 장치 여부를 판별하고 정보를 구문 분석하여 장치를 열거합니다.

OMRON FINS Read Controller Status는 컨트롤러 모델, 컨트롤러 버전, 프로그램 영역 크기, IOM 크기, DM 워드 수, 타이머/카운터 크기, 확장 DMZ 크기, 스텝/전환 수, 메모리 카드 종류 및 메모리 카드 크기와 같은 장치의 기본 정보를 가져옵니다.

이 스크립트로 구문 분석되는 OMRON FINS 속성은 다음과 같습니다:

  1. 컨트롤러 모델 - 컨트롤러 모델을 나타내는 20바이트 이하의 문자열

  2. 컨트롤러 버전 - 20바이트 이하의 버전 번호를 나타내는 문자열

  3. 시스템 전용 - 시스템 사용을 위해 예약됨. 이 필드에 흥미로운 내용이 있는지 확인하기 위해 정보를 수집합니다

  4. 프로그램 영역 크기 - PC 설정 및 프로그램 영역의 크기

  5. IOM 크기 - 비트/워드 명령을 사용할 수 있는 영역의 크기

  6. DM 워드 수 - DM 영역의 총 워드 수

  7. 타이머/카운터 크기 - 사용 가능한 최대 타이머/카운터 수

  8. 확장 DM 크기 - 확장 DM 영역의 뱅크

  9. 스텝/전환 수 - 사용 가능한 최대 스텝/전환 수

  10. 메모리 카드 종류 - 00: 메모리 카드 없음 01: SPRAM 02: EPROM 03: EEPROM

  11. 메모리 카드 크기 - 메모리 카드의 크기(Kb)

####역사 및 배경

FINS(Factory Intelligent Network Services)는 명령을 사용하여 PLC와 통신하는 프로토콜입니다. 이 프로토콜은 UDP 버전과 TCP 버전을 모두 지원합니다. 두 프로토콜 간에는 몇 가지 차이점이 있으므로 TCP와 UDP 서비스를 모두 스캔할 수 있도록 두 개의 스크립트가 작성되었습니다.

OMRON FINS는 수처리 공장, 제조 시설 및 유틸리티와 같은 산업 자동화 제어 시스템에 사용됩니다.

####설치

이 스크립트는 실행에 Nmap이 필요합니다. Nmap이 없다면 Nmap 지침에 따라 Nmap을 다운로드하여 설치하십시오. http://nmap.org/download.html

#####Windows

enip-enumerate.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 관리자 권한으로 수행해야 합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
move omron*.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

enip-enumerate.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
sudo mv omron*.nse /usr/share/nmap/scripts
	

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 는 OMRON FINS를 스캔하려는 대상입니다.

root@kitploit:~
Windows: nmap -p 9600 --script omrontcp-info <host> 
Windows: nmap -sU -p 9600 --script omronudp-info <host>

Linux: nmap -p 9600 --script omrontcp-info <host> 
Linux: sudo nmap -sU -p 9600 --script omronudp-info <host>

	

####참고 사항

이 스크립트의 공식 TCP 버전은 다음에서 유지 관리됩니다: https://github.com/digitalbond/Redpoint/omrontcp-info.nse

이 스크립트의 공식 UDP 버전은 다음에서 유지 관리됩니다: https://github.com/digitalbond/Redpoint/omronudp-info.nse

이 스크립트는 표준 FINS 및 TCP/FINS 대상 포트인 UDP 9600과 TCP 9600을 사용합니다.

== ###pcworx-info.nse ![pcworx-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)

####저자

Stephen Hilt
Digital Bond, Inc

####목적 및 설명

pcworx-info.nse의 목적은 PC Worx 프로토콜을 통해 Phoenix Contact ILC PLC를 식별하고 열거하는 것입니다. PLC는 사전 생성된 요청으로 TCP/1962를 쿼리하여 확실하게 식별됩니다. 응답 메시지를 통해 PC Worx 지원 PLC 여부를 판별하고 추가 열거를 수행합니다.

이 스크립트는 통신을 설정한 다음 PLC에서 정보를 요청하기 위해 총 3개의 패킷을 PLC로 보냅니다.

이 스크립트로 구문 분석되는 PC Worx 속성은 다음과 같습니다:

  1. PLC 유형 - ILC PLC 유형을 나타내는 문자열

  2. 모델 번호 - 2737193과 같은 PLC 모델을 나타내는 ASCII 숫자 문자열

  3. 펌웨어 버전 - PLC에서 실행 중인 펌웨어 버전을 나타내는 문자열

  4. 펌웨어 날짜 - PLC에서 실행 중인 펌웨어의 빌드 날짜를 나타내는 문자열

  5. 펌웨어 시간 - PLC에서 실행 중인 펌웨어의 빌드 시간을 나타내는 문자열

####역사 및 배경

Phoenix Contact 제품 웹페이지에서 발췌 링크

PC Worx는 Phoenix Contact의 모든 컨트롤러를 위한 일관된 엔지니어링 소프트웨어입니다. IEC 61131에 따른 프로그래밍, 필드버스 구성 및 시스템 진단을 단일 소프트웨어 솔루션으로 결합합니다. 이를 통해 하드웨어와 소프트웨어 간의 최적의 상호 작용이 제공됩니다. PC Worx를 사용하여 복잡한 자동화 개념을 구현할 수 있습니다. 지원할 I/O 수에 따라 PC WORX BASIC과 PC WORX PRO의 두 가지 버전 중에서 선택할 수 있습니다.

####설치

이 스크립트는 실행에 Nmap이 필요합니다. Nmap이 없다면 Nmap 지침에 따라 Nmap을 다운로드하여 설치하십시오. http://nmap.org/download.html

#####Windows

pcworx-info.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 관리자 권한으로 수행해야 합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
move pcworx-info.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

pcworx-info.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
sudo mv pcworx-info.nse /usr/share/nmap/scripts
	

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 는 Phoenix Contact PLC를 스캔하려는 대상입니다.

root@kitploit:~
Windows: nmap -p 1962 --script pcworx-info -sV <host>

Linux: nmap -p 1962 --script pcworx-info -sV <host> 

	

####참고 사항

이 스크립트의 공식 버전은 다음에서 유지 관리됩니다: https://github.com/digitalbond/Redpoint/pcworx-info.nse

이 스크립트는 표준 PC Worx 대상 포트인 TCP 1962를 사용합니다.

==

###proconos-info.nse ![proconos-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)

####저자

Stephen Hilt
Digital Bond, Inc

####목적 및 설명

proconos-info.nse의 목적은 ProConOS/MultiProg 프로토콜을 통해 PLC를 식별하고 열거하는 것입니다. PLC는 사전 생성된 요청으로 TCP/20547을 쿼리하여 확실하게 식별됩니다. 응답 메시지를 통해 ProConOS/MultiProg 지원 PLC 여부를 판별하고 추가 열거를 수행합니다.

PLC에서 이 정보를 쿼리하는 데는 요청 하나만 필요합니다.

이 스크립트로 구문 분석되는 ProConOS/MultiProg 속성은 다음과 같습니다:

  1. 래더 로직 런타임 - 런타임 이름, 버전 및 빌드 날짜를 표시하는 문자열

  2. PLC 유형 - PLC 유형 및 펌웨어 버전을 나타내는 문자열

  3. 프로젝트 이름 - PLC에서 현재 실행 중인 프로젝트 이름을 나타내는 문자열

  4. 부팅 프로젝트 - PLC에서 부팅되도록 설정된 프로젝트 이름을 나타내는 문자열

  5. 프로젝트 소스 코드 - 프로젝트의 소스 코드 사용 가능 여부를 나타내는 문자열

####설치

이 스크립트는 실행에 Nmap이 필요합니다. Nmap이 없다면 Nmap 지침에 따라 Nmap을 다운로드하여 설치하십시오. http://nmap.org/download.html

#####Windows

proconos-info.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 관리자 권한으로 수행해야 합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
move proconos-info.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

proconos-info.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
sudo mv proconos-info.nse /usr/share/nmap/scripts
	

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 는 ProConOS/MultiProg PLC를 스캔하려는 대상입니다.

root@kitploit:~
Windows: nmap -p 20547 --script proconos-info -sV <host>

Linux: nmap -p 20547 --script proconos-info -sV <host> 

	

####참고 사항

이 스크립트의 공식 버전은 다음에서 유지 관리됩니다: https://github.com/digitalbond/Redpoint/proconos-info.nse

이 스크립트는 표준 ProConOS/MultiProg 대상 포트인 TCP 20547을 사용합니다.

==

###s7-enumerate.nse ![s7-enumerate Sample Output] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/S7screenshot.png)

####저자

Stephen Hilt
Digital Bond, Inc

참고: 이 스크립트는 Nmap 내에서 PLCScan과 동일한 기능을 제공하기 위한 것입니다. PLCScan이 수집하는 일부 정보는 이 NSE로 이식되지 않았으며, 이 정보는 수신되는 패킷에서 구문 분석할 수 있습니다.

PLCScan을 만들어 준 Positive Research와 Dmitry Efanov에게 감사드립니다

####목적 및 설명

s7-enumerate.nse의 목적은 Siemens SIMATIC S7 PLC를 식별하고 열거하는 것입니다. S7은 사전 생성된 COTP 및 S7COMM 메시지로 TCP/102를 쿼리하여 확실하게 식별됩니다. 응답 메시지를 통해 S7 PLC 여부를 판별하고 추가 열거를 수행합니다. 참고: TCP/102는 여러 애플리케이션에서 사용되며 그중 하나가 S7COMM입니다.

S7 통신이 성공적으로 설정된 후 두 개의 S7 요청이 전송됩니다.

이 요청들은 기본 하드웨어, 펌웨어 정보와 플랜트 식별 및 시스템 이름과 같은 일부 설명 정보를 가져옵니다. 그런 다음 이 정보는 Nmap으로 반환되어 Nmap이 지원하는 표준 출력 형식으로 표시됩니다.

이 스크립트로 구문 분석되는 S7 속성은 다음과 같습니다:

  1. 모듈 - 쿼리 중인 모듈의 식별을 나타내는 문자열. 315, 412, 1200 등과 같은 S7 모델을 식별합니다.

  2. 기본 하드웨어 - 쿼리 중인 기본 하드웨어의 식별을 나타내는 문자열

  3. 버전 - 기본 하드웨어 버전의 식별을 나타내는 문자열

  4. 시스템 이름 - 장치에 부여된 시스템 이름을 나타내는 문자열. 자산 소유자가 구조화된 명명 규칙을 구현한 경우 유용한 정보를 제공할 수 있습니다.

  5. 모듈 유형 - 삽입된 모듈의 모듈 유형 이름 문자열

  6. 일련 번호 - 모듈의 일련 번호 문자열. 주로 재고 관리 목적으로 유용합니다.

  7. 저작권 - 저작권 정보 문자열. 일반적으로 "Original Siemens Equipment"로 표시되지만, S7 프로토콜 스택의 타사 구현이 추가 정보를 제공할 수도 있습니다.

  8. 플랜트 식별 - 장치에 구성된 플랜트 식별을 나타내는 문자열. 이 문자열은 스캔에서 거의 발견되지 않았지만 유용한 정보를 제공할 수 있습니다.

####역사 및 배경

Wikipedia의 SIMATIC 문서에서 발췌 http://simple.wikipedia.org/wiki/SIMATIC:

SIMATIC은 독일 회사 Siemens가 개발한 자동화 시스템의 이름입니다. 이 자동화 시스템은 산업 생산에 사용되는 기계를 제어합니다. 이 시스템을 통해 기계가 자동으로 작동할 수 있습니다.

####설치

이 스크립트는 실행에 Nmap이 필요합니다. Nmap이 없다면 Nmap 지침에 따라 Nmap을 다운로드하여 설치하십시오. http://nmap.org/download.html

#####Windows

s7-enumerate.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 관리자 권한으로 수행해야 합니다. 시작 -> 프로그램 -> 보조프로그램으로 이동하여 '명령 프롬프트'를 마우스 오른쪽 버튼으로 클릭하십시오. '관리자 권한으로 실행'을 선택하십시오.

root@kitploit:~
move s7-enumerate.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

s7-enumerate.nse를 다운로드한 후 NSE Scripts 디렉터리로 이동해야 합니다. 이 작업은 sudo/root 권한으로 수행해야 합니다.

root@kitploit:~
sudo mv s7-enumerate.nse /usr/share/nmap/scripts
	

####사용법

터미널 창/명령 프롬프트에서 다음 명령 중 하나를 사용하십시오. 여기서 는 S7 PLC를 스캔하려는 대상입니다.

root@kitploit:~
Windows: nmap -p 102 --script s7-enumerate -sV <host>

Linux: sudo nmap -p 102 --script s7-enumerate -sV <host> 

	

####참고 사항

이 스크립트의 공식 버전은 다음에서 유지 관리됩니다: https://github.com/digitalbond/Redpoint/s7-enumerate.nse

이 스크립트는 표준 S7COMMS 대상 포트인 TCP 102를 사용합니다.

도구 다운로드