kbu1564 / SecurityBootloader

Grub based Security Multi-Bootloader System
GNU General Public License v3.0
5 stars 2 forks source link

네트워크 통신을 위한 분석 #7

Open kbu1564 opened 9 years ago

kbu1564 commented 9 years ago

3 이슈 분석글을 바탕으로 하여 본격적인 네트워크 통신을 위한 함수 호출부분에 대한 분석이 필요

@GangHoyong @formfoxk @kimhajin

관련 분석 내용및 네트워크 통신에 대한 수정시 git commit 의 로그 내용에 반드시 #을 이용하여 본 이슈를 태그할것 또한 본 이슈에 대해 단순 정보 공유를 포함 의심의 여지가 있는 항목에 대해 본 이슈에 글을 올리기 부탁 바람!!

PS : 알았다는것을 구지 적을 필요 없음

KangHoyong commented 9 years ago

Grub network boot (TCP.C code 분석중)

네트워크를 이용해서 boot하는 방법

Command Line 이용해서 네트워크 설정방법 (How to set up your network)

Grub Net 관련 코드

Grub tcp.c code 분석 !!

pxe 관련 파일 location

HTTP boot 참고 자료

@kbu1564 @formfoxk @kimhajin

kbu1564 commented 9 years ago

네트워크 관련 함수 분석글(진행중)

grub/grub-core/net 디렉토리에서 본격적으로 네트워크 전송을 위한 함수들과 OSI7 계층 구현을 위한 각종 헤더들의 자료구조가 정의되기 시작함. 해당 디렉토리의 내용에 대한 분석이 필요로 할듯 보임.

특히 tcp.c 파일의 집중적인 분석을 부탁하며 해당 net 모듈의 활성화및 함수 사용을 원하거나 로드를 원할 경우 grub_dl_load("net"); 함수를 이용하여 net 모듈을 활성화 및 초기화 이후 헤더 포함한 뒤 사용하면 됨.

네트워크를 통해 부팅하는 PXE Booting 부분의 main 루틴을 기준으로 함수 호출 스택 분석을 수행해야 할것 같음

kbu1564 commented 9 years ago

grub-net-load

참고 사이트 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/PXEBoot :+1: 위 사이트 보고 PXE 부팅 환경 구축 후 네트워킹 분석 하던거 계속 진행하면 됨

아래의 명령어를 이용하여 pxeboot를 이용하여 부팅하게 될 모듈 및 core.0 이미지 파일 생성 --subdir 명령인지 뒤에 오는 값은 추후 pxe 부팅시 로드되는 기본 디렉토리 경로임

sudo ~/g2/usr/bin/grub-mknetdir \
           --net-directory=/srv/tftpboot \
           --subdir=boot/grub \
           --modules=tftp
KangHoyong commented 9 years ago

:100:

kbu1564 commented 9 years ago

기존의 normal.mod 파일을 tftp 서버에서 받지 못하여 rescu 모드로 진입하는 문제 원인 : tftpd 설치시 종속성 때문에 tftpd-hpa 가 제거 되면서 해당 tftp의 udp 포트로 normal.mod를 grub 에서 받아오질 못하게됨

해결 : tftpd-hpa 가 정상적으로 설치되어 service가 시작 되어 있어야만 올바르게 진입하게 됨.

sudo apt-get install tftp tftpd-hpa

혹은

sudo service tftpd-hpa restart

이리 하게 되고 ./run 을 실행시 정상동작을 확인함


만약 해당 파일을 찾을 수 없는 경우라면 tftp 서비스 가 올바른 경로를 실행하지 않 것임 우선 아래의 명령어로 할 경우 tftp디렉토리가 실제 설정한 경로가 아닌 다른경로를 가리키고 있을 가능성이 높음 이는 tftpd-hpa 를 기본 설치하면서 바로 시작되는 과정에서 기본값을 로드하여 실행하기에 실제 부팅시 올바른 경로를 찾아오지 못하여 발생하는 문제임

ps aux | grep tftp

sudo vim /etc/default/tftpd-hpa

위의 파일에서 TFTP_DIRECTORY 의 경로를 변경한 뒤 데몬을 재시작 하면됨.

kbu1564 commented 9 years ago

grub

위의 그림은 실제 iPXE Booting 을 통해 isc-dhcp-server 로 아이피를 할당받아 외부의 core.0 파일을 부팅한 뒤 grub 콘솔에서 net_nslookup 명령어로 실제 http://www.naver.com의 named 서버의 아이피를 조회하는 부분을 수행한 모습

네임서버를 조회하기 위해서는 외부 서버와의 통신이 필수 불가결하며 위 첨부된 이미지의 상단부분을 보게 되면 wireshark 패킷 캡쳐내용중 실제 DNS 조회 과정에 대한 감청된 로그 내용을 확인 할 수 있음.

자세한 내용은 추후 정리하여 빠른시일내에 회의를 거쳐 배포할 예정임.

@GangHoyong @formfoxk @kimhajin

위 사진의 내용은 core.0의 경우 http://os.pj-room.com/ 로 부터 얻어오게 되며 이후 모듈들의 경우 next-server 의 내용이 설정되지 않아 기본 tftp로 부터 수신받아오는 모습

이 설정에 필요한 핵심 수정 부분은 dhcp 서버 설정의 /etc/default/isc-dhcp-server 파일에 있음 해당 파일의 설정값중 dhcp 서버의 패킷들이 어떤 인터페이스 장치를 통해 요청되어지게 될지를 지정하는 부분이 존재하는데 이부분의 값을 적절한 외부 통신이 가능한 인터페이스 장치로 초기화를 수행해야함.