Skip to content

Tcpdump란?

 

Tcpdump란? 
Tcpdump는 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들의 헤더들 을 출력해 주는 프로그램이다.

프로그램의 특성상, 네트워크 인터페이스를 아주 심도 있게 사용하기 때문에, 실행하는 사람은 반드시 네트워크 인터페이스에 대한

읽기 권 한이 있어야만 한다. OS dependent) 위에서 말하는 읽기 권한을 가지고 있어야 하는 파일, 혹은 Tcpdump의 퍼미션 이다. 

 

Tcpdump의 패키지 구하기 
Tcpdump는 ftp://ftp.ee.lbl.gov/tcpdump.tar.Z에서 최신 버전을 구할 수 있다. 유명 한 프로그램이기 때문에, 
시스템소프트웨어를 패키지형태로 제공해 주는 OS들의 경우 Vendor에서 패키징된(컴파일된) 버전으로도 구할 수 있을 것이다. 

 

대부분의 리눅스와 유닉스 운영체제에서는 기본적으로 tcpdump가 설치되어 있지만 윈도우 시스템용은 따로 다운로드[클릭]한다.http://essue.tistory.com/14?srchid=BR1http://essue.tistory.com/14

 

 

tcpdump의 사용법 (1) 사용법 tcpdump [options] [host]

 

tcpdump 플래그(flags)

TCP 플래그  TCPDUMP 플래그  플래그의 의미
SYN S  SYN패킷, 접속요청을 할 때 보내는 패킷을 말한다.
TCP접속시에 가장먼저 보내는 패킷이다.
ACK ack  ACK패킷, 상대방으로부터 패킷을 받은 뒤에 알려주는 
패킷을 말한다. 다른 플래그와 같이 출력되는 경우도 
있다.
FIN F  접속종료를 위한 플래그로 이 패킷을 보내는 곳이 
현재 접속하고 있는 곳과 접속을 끊고자 할 때 사용한다.
RESET R  이 패킷을 보내는 곳이 현재 접속하고 있는 곳과 즉시
연결을끊고자 할 때 사용한다.
PUSH P  데이터를 즉시 목적지로 보내라는 의미이다. 텔넷과 
같이 상호작용이 중요한 프로그램의 경우 빠른 응답
이 중요한다. 이때 사용하는 플래그이다.
UGENT URG  긴급한 데이터는 다른 데이터에 비해 우선순위가 
높아야 한다. 예를 들어 ftp로 자료를 받고 있는 도중 
[CTRL]+[C] 를 받으면 즉시 자료받기를 중단해야 하는 
것처럼 이 때 사용하는 플래그이다.
Placeholder .  패킷이 SYN, FINISH, RESET, PUSH등의 플래그가 없는
경우이 플래그가 세팅된다. 이 플래그는 ACK플래그와 
함께 사용되는 경우도 있다.

 

 

tcpdump의 옵션 

 

-h: 버전 및 기본 사용법을 보여준다.

 

-a : Network & Broadcast 주소들을 이름들로 바꾼다.

 

-c Number : 제시된 수의 패킷을 받은 후 종료한다.

 

-d : compile된 packet-matching code를 사람이 읽을 수 있도록 바꾸어 표준 출력으로 출력하고, 종료한다.

 

-dd : packet-matching code를 C program의 일부로 출력한다.

 

-ddd : packet-matching code를 숫자로 출력한다.

 

-e : 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다. -

 

f : 외부의 internet address를 가급적 심볼이 아닌 숫자로 출력한다.(Sun의 yp server와의 사용은 가급적 피한다.)

 

-F file : filter 표현의 입력으로 파일을 받아들인다. 커맨드라인에 주어진 추가의 표현들은 모두 무시된다.

 

-i device : 어느 인터페이스를 경유하는 패킷들을 잡을지 지정한다.

               지정되지 않으면 시스템의 인터페이스 리스트를 검색하여 가장 낮은 번호를 가진 인터페이스를 선택한다.(이 때 loopback은 제외된다.)

예) tcpdump -i eth0 -l : 표준 출력으로 나가는 데이터들을 line buffering한다. 다른 프로그램에서 tcpdump로부터 데이 터를 받고자 할 때 유용하다.

보통 'tcpdump -l | tee dat' 나 'tcpdump -l < dat & tail -f dat' 명령으로 연계해서 사용하면 편리하다.

 

-n : 모든 주소들을 번역하지 않는다(port,host address 등등)

 

-N : 호스트 이름을 출력할 때, 도메인을 찍지 않는다.

 

-O : packet-matching code optimizer를 실행하지 않는다. 이 옵션은 optimizer에 있는 버그를 찾을 때나 쓰인다.

 

-p : 인터페이스를 promiscuous mode로 두지 않는다.

 

-q : 프로토콜에 대한 정보를 덜 출력한다. 따라서 출력되는 라인이 좀 더 짧아진다.

 

-r file : 패킷들을 '-w'옵션으로 만들어진 파일로 부터 읽어 들인다. 파일에 "-" 가 사용되면 표준 입력을 통해서 받아들인다.

 

-s length: 패킷들로부터 추출하는 샘플을 default값인 68Byte외의 값으로 설정할 때 사용한다.(Sun OS의 NIT에서는 최소가 96Byte이다). 68Byte는 IP,ICMP, TCP, UDP등에 적절한 값이지만 Name Server나 NFS 패킷들의 경우에는 프로토콜의 정보들을 Truncation할 우려가 있다. 이 옵션을 수정할 때는 신중해야만 한다. 이유는 샘플 사이즈를 크게 잡으면 곧 패킷 하 나하나를 처리하는데 시간이 더 걸릴 뿐만아니라 패킷 버퍼의 사이즈도 자연히 작아지게 되어 손실되는 패킷들이 발생할 수 있기 때문이다. 또, 작게 잡으면 그만큼의 정보를 잃 게되는 것이다. 따라서 가급적 캡춰하고자 하는 프로토콜의 헤더 사이즈에 가깝게 잡아 주어야 한다.

 

-T type : 조건식에 의해 선택된 패킷들을 명시된 형식으로 표시한다. type에는 다음과 같은 것들이 올 수 있다. rpc(Remote Procedure Call), rtp(Real-Time Applications protocol), rtcp (Real-Time Application control protocal), vat(Visual Audio Tool), wb(distributed White Board)

 

-S : TCP sequence번호를 상대적인 번호가 아닌 절대적인 번호로 출력한다.

 

-t : 출력되는 각각의 라인에 시간을 출력하지 않는다.

 

-tt : 출력되는 각각의 라인에 형식이 없는 시간들을 출력한다.

 

-v : 좀 더 많은 정보들을 출력한다.

 

-vv : '-v'보다 좀 더 많은 정보들을 출력한다.

 

-vvv : 16진수값 형태로 정보를 보여준다. 보통 -X옵션과 사용되어 -w : 캡춰한 패킷들을 분석해서 출력하는 대신에 그대로 파일에 저장한다.

 

-x : 각각의 패킷을 헥사코드로 출력한다.

 

-X : 헥사코드와 ascii형태 모두 출력해준다. 보통 -x 옵션과 같이 사용된다. -조건식(expression!) 옵션의 제일 마지막인 조건식은 어떤 패킷들을 출력할 지를 선택하는 데 쓰인다. 조건식이 주어지지 않는다면 모든 패킷들이 대상이 된다. 조건식들은 하나 또는 여러 개의 primitive들로 구성되어 있고 primitive들은 다시 하나 또는 여러 개의 qualifier들 다음에 오는 하나의 값으로 이루어진다.

 

*qualifier type : 주어진 값의 종류가 무엇인지를 나타낸다. 가능한 type들은 'host', 'net', 'port'가 있다. type이 없는 값들은 type을 host라 가정한다.

 

dir : id로 부터의 어떤 특정한 전송 방향을 나타낸다. 가능한 방향은 'src', 'dst', 'src or dst', 'src and dst'이다. 만약 방향이 정해지지 않았다면, src or dst라 가정한다. "For `null' link layers (i.e. point to point protocols such as slip) the inb ound and out bound qualifiers can be used to specify a desired direction."

 

proto : 매칭을 특정 프로토콜에 한해서 수행한다. 가능한 프로토콜들은 ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp, udp이다. 만약 프로토콜이 명시되지 않았다 면, 해당하는 값의 type에 관련된 모든 프로토콜들이 그 대상이 된다. *위의 패턴을 따르지 않는 primitive : gateway, broadcast, less, greater, 산술식이 있으며 참고 로 더 정교한 조건식을 사용하려면 'and(&&)','or(||)','not(!)' 을 사용할 수 있다. *사용가능한 primitive들 dst host HOST => packet의 IP destination 항목이 HOST일때 참이 된다. src host HOST => packet의 IP source 항목이 HOST일때 참이 된다. host HOST => IP source, IP destination 항목 중 어느 하나라도 HOST이면 참이다. ether dst ehost => ethernet destination 주소가 ehost일 때 참이다. ether src ehost => ethernet source 주소가 ehost일 때 참이다. ether host ehost => ethernet source, destination 항목들 중 어느 하나라도 ehost이면 참이다. gateway host => 패킷이 host를 게이트웨이로 사용하면 참이다. 이 말의 의미는 ethernet sour ce나 destina tion 항목은 host이지만, IP source와 destination은 host가 아닐 때를 말한다. dst net NET => 패킷의 IP destination 주소가 NET의 network number를 가지고 있을 때 참이다. src net NET => 패킷의 IP source 주소가 NET의 network number를 가지고 있을 때 참이다. net NET => 패킷의 IP source 주소 혹은 destination 주소가 NET의 network number를 가 지고 있을 때 참이다. net netmask mask => IP 어드레스가 지정된 netmask를 통해서 net과 매칭되면 참이다. net net/len => IP 어드레스가 netmask와 len 비트만큼 매치되면 참이다. dst port PORT => 패킷이 ip/tcp, ip/udp 프로토콜의 패킷이고 destination port의 값이 PORT일 때 참이다. port는 /etc/services에 명시된 이름일 수도 있고 그냥 숫자일 수도 있다. 만약 이름이 사용 됐다면 port 번호와 프로토콜이 같이 체크될 것이다. 만약 숫자나 불 확실한 이름이 사용됐을 경우에는 port 번호만이 체크될 것이다. src port PORT => 패킷의 source port의 값으로 PORT를 가지면 참이다. port PORT => 패킷의 source, destination port 중에 하나라도 PORT이면 참이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 



-------------------------------------------------------------------------------- 
Tcpdump Source의 간략한 설명 
-------------------------------------------------------------------------------- 

Tcpdump의 옵션들 

-a : Network & Broadcast 주소들을 이름들로 바꾼다. 
-c Number : 제시된 수의 패킷을 받은 후 종료한다. 
-d : comile된 packet-matching code를 사람이 읽을 수 있도록 바꾸어 표준 출력으로 출력하고, 종료한다. 
-dd : packet-matching code를 C program의 일부로 출력한다. 
-ddd : packet-matching code를 숫자로 출력한다. 
-e : 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다. 즉 맥어드레스를 함께 출력한다. 
-f : 외부의 internet address를 가급적 심볼로 출력한다(Sun의 yp server와의 사용은 가급적 피하자). 
-F file : filter 표현의 입력으로 파일을 받아들인다. 커맨드라인에 주어진 추가의 표현들은 모두 무시된다. 
-i device : 어느 인터페이스를 경유하는 패킷들을 잡을지 지정한다. 지저되지 않으면 시스템의 인터페이스 리스트를 뒤져서 
가장 낮은 번호를 가진 인터페이스를 선택한다(이 때 loopback은 제외된다). 
-l : 표준 출력으로 나가는 데이터들을 line buffering한다. 다른 프로그램에서 tcpdump로부터 데이터를 받고자 할 때, 
유용하다. 
-n : 모든 주소들을 변환하지 않는다(port, host address 등등) 이것은 DNS lookup을 피할 수 있다. 
-nn : protocol 과 port를 이름으로 변환하지 않는다. 
-N : 호스트 이름을 출력할 때, 도메인을 찍지 않는다. 
-O : packet-matching code optimizer를 실행하지 않는다. 이 옵션은 optimizer에 있는 버그를 찾을 때나 쓰인다. 
-p : 인터페이스를 promiscuous mode로 두지 않는다. 
-q : 프로토콜에 대한 정보를 덜 출력한다. 따라서 출력되는 라인이 좀 더 짧아진다. 
-r file : 패킷들을 '-w'옵션으로 만들어진 파일로 부터 읽어 들인다. 파일에 "-" 가 사용되면 표준 입력을 통해서 
받아들인다. 
-s length: 패킷들로부터 추출하는 샘플을 default값인 68Byte외의 값으로 설정할 때 사용한다(SunOS의 NIT에서는 최소가 
96Byte이다). 68Byte는 IP,ICMP, TCP, UDP등에 적절한 값이지만 Name Server나 NFS 패킷들의 경우에는 프로토콜의 정보들을 
Truncation할 우려가 있다. 이 옵션을 수정할 때는 신중해야만 한다. 이유는 샘플 사이즈를 크게 잡으면 곧 패킷 하나하나를 
처리하는데 시간이 더 걸릴 뿐만아니라 패킷 버퍼의 사이즈도 자연히 작아지게 되어 손실되는 패킷들이 발생할 수 있기 
때문이다. 또, 작게 잡으면 그만큼의 정보를 잃게되는 것이다. 따라서 가급적 캡춰하고자 하는 프로토콜의 헤더 사이즈에 
가깝게 잡아주어야 한다. 
-T type : 조건식에 의해 선택된 패킷들을 명시된 형식으로 표시한다. type에는 다음과 같은 것들이 올 수 있다. rpc(Remote 
Procedure Call), rtp(Real-Time Applications protocol), rtcp(Real-Time Application control protocal), vat(Visual Audio 
Tool), wb(distributed White Board) 
-S : TCP sequence번호를 상대적인 번호가 아닌 절대적인 번호로 출력한다. 
-t : 출력되는 각각의 라인에 시간을 출력하지 않는다. 
-tt : 출력되는 각각의 라인에 형식이 없는 시간들을 출력한다. 
-v : 좀 더 많은 정보들을 출력한다. 
-vv : '-v'보다 좀 더 많은 정보들을 출력한다. 
-vvv : '-vv'보다 좀 더 많은 정보들을 출력한다. 실제로 사용할 일은 많지 않다. 
-w : 캡춰한 패킷들을 분석해서 출력하는 대신에 그대로 파일에 저장한다. 
-x : 각각의 패킷을 헥사코드로 출력한다. 

조건식(expression) 

옵션의 제일 마지막인 조건식은 어떤 패킷들을 출력할지를 선택하는데 쓰인다. 조건식이 주어지지 않는 다면 모든 패킷들이 그 
대상이 될 것이다. 일단 주어지면, 아무리 패킷들이 많아도 조 건식에 부합하는 패킷만을 출력한다. 

조건식들은 하나 또는 몇 개의 primitive들로 구성되어 있다. primitive들은 보통 하나 혹은 몇개의 qualifier들 다음에 오는 
하나의 값으로 이루어진다. Qualifier들은 모두 3 종류이며 다음과 같다. 

type : 주어진 값의 종류가 무엇인지를 나타낸다. 가능한 type들은 'host', 'net', 'port'가 있다. type이 없는 값들은 type을 
host라 가정한다. 

dir : id로 부터의 어떤 특정한 전송 방향을 나타낸다. 가능한 방향은 'src', 'dst', 'src or dst', 'src and dst'이다. 만약 
방향이 정해지지 않았다면, src or dst라 가정한다. "For `null' link layers (i.e. point to point protocols such as slip) 
the inb ound and out bound qualifiers can be used to specify a desired direction." 

proto : 매칭을 특정 프로토콜에 한해서 수행한다. 가능한 프로토콜들은 ether, fddi, ip, arp, rarp, decnet, lat, sca, 
moprc, mopdl, tcp, udp이다. 만약 프로토콜이 명시되지 않았다면, 해당하는 값의 type에 관련된 모든 프로토콜들이 그 대상이 
된다. 

이 밖에도 위의 패턴을 따르지 않는 Primitive들이 존재한다(gateway, broadcst, less, greater, 산술식). 

좀 더 정교한 조건식들을 사용하려면, 'and(&&)', 'or(||)', 'not(!)'들을 사용하여 여러 primitive들을 연결하면 된다. 같은 
표현들은 생략될 수 있다. 

사용 가능한 Primitive들 

dst host HOST 
packet의 IP destination 항목이 HOST일때 참이 된다. 

src host HOST 
packet의 IP source 항목이 HOST일때 참이 된다. 

host HOST 
IP source, IP destination 항목 중 어느 하나라도 HOST이면 참이다. 

ether dst ehost 
ethernet destination 주소가 ehost일 때 참이다. 

ether src ehost 
ethernet source 주소가 ehost일 때 참이다. 

ether host ehost 
ethernet source, destination 항목들 중 어느 하나라도 ehost이면 참이다. 

gateway host 
패킷이 host를 게이트웨이로 사용하면 참이다. 이 말의 의미는 ethernet sour ce나 destination 항목은 host이지만, IP 
source와 destination은 host가 아닐 때를 말한다. 

dst net NET 
패킷의 IP destination 주소가 NET의 network number를 가지고 있을 때 참이 다. 

src net NET 
패킷의 IP source 주소가 NET의 network number를 가지고 있을 때 참이다. 

net NET 
패킷의 IP source 주소 혹은 destination 주소가 NET의 network number를 가 지고 있을 때 참이다. 

net netmask mask 
IP 어드레스가 지정된 netmask를 통해서 net과 매칭되면 참이다. 

net net/len 
IP 어드레스가 netmask와 len 비트만큼 매치되면 참이다. 

dst port PORT 
패킷이 ip/tcp, ip/udp 프로토콜의 패킷이고 destination port의 값이 PORT일 때 참이다. port는 /etc/services에 명시된 
이름일 수도 있고 그냥 숫자일 수도 있다. 만약 이름이 사용됐다면 port 번호와 프로토콜이 같이 체크될 것이다. 만약 숫자나 
불 확실한 이름이 사용됐을 경우에는 port 번호만이 체크될 것이다. 

src port PORT 
패킷의 source port의 값으로 PORT를 가지면 참이다. 

port PORT 
패킷의 source, destination port 중에 하나라도 PORT이면 참이다. 

less length 
패킷이 length보다 짧거나 같으면 참이다.(len <= length) 

greater length 
패킷이 length보다 짧거나 같으면 참이다.(len >= length) 

ip proto <\protocol or "protocol" or protocol id> 
패킷이 지정된 종류의 프로토콜의 ip패킷이면 참이다. Protocol은 icmp, igrp, udp, nd, tcp 중의 하나 혹은 몇 개가 될 수 있다. 주의할 점은 그냥 protocol이 아니라 위와 같이 escape 문자를 사용하거나 
protocol id를 사용해야 한다. 
============================== 
프로토콜 ID | 프로토콜 종류 
============================== 
1 | ICMP(인터넷 제어 메시지 프로토콜) 
2 | IGMP(인터넷 그룹 관리 프로토콜) 
6 | TCP(전송 제어 프로토콜) 
17 | UDP(사용자 데이터그램 프로토콜) 
============================== 

ehter broadcast 
패킷이 ethernet broadcast 패킷이라면 참이다. ehter는 생략 가능하다. 

ip broadcast 
패킷이 IP broadcast 패킷이라면 참이다. 

ether multicast 
패킷이 IP multicast 패킷이라면 참이다. 

ether proto protocol 
패킷이 ether type의 protocol이라면 참이다. protocol은 ip, arp, rarp 중에 하나 혹은 몇개가 될 수 있다. ip proto 
protocol에서와 마찬가지로 ip, arp, rarp는 escape 되어야 한다. 

decnet src host 
만약 DECNET의 source address가 host이면 참이다. 이 어드레스는 '10.123'이 나 DECNET의 host name일 수 있다. DECNET host 
name은 DECNET에서 돌아가도록 설정된 Ultrix 시스템에서만 사용 가능하다. 

decnet dst host 
DECNET destination address가 host이면 참이다. 

decnet host HOST 
DECNET source, destination address중의 하나라도 HOST이면 참이다. 

ip, arp, rarp, decnet 
ether proto [ip|arp|rarp|decnet]의 약어 

lat, moprc, mopdl 
ether proto [lat|moprc|mopdl]의 약어 

tcp, udp, icmp 
ip proto [tcp|udp|icmp]의 약어 

expr relop expr 

EXPR 
proto [expr:size]의 형식을 띤다. proto, expr, size에 올 수 있는 것들은 다음과 같다. 
proto : ether, fddi, ip, arp, rarp, tcp, udp, icmp 
expr : indicate Byte offset of packet of proto 
size : optional. indicate the size of bytes in field of interest 
default is one, and can be two or four 

RELOP 
!=, =, <=, >=, etc. 
이 조건식을 사용하기 위해서는 먼저 해당하는 Protocol(proto)의 헤더에 관련된 것들을 자세히 알아야만 한다. proto에는 
대상이 될 프로토콜을 지정한다. expr에는 프로토콜 헤더의 처음부터의 Byte Offset을 지정하는 식이 들어가게 된다. Size는 
Option이며 지정이 안 되어 있을 경우에는 자동으로 1byte를 지칭한다. 따라서 이 조건식을 사용하게 되면 헤더에 포함된 
정보를 Bitmask를 사용하여 직접 원하는 패킷인지를 가려낼 수 있기 때문에, 보다 정밀한 사용이 가능하게 된다.

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

Tcpdump의 사용 예제들 

security라는 호스트로부터 날아오고, 날아가는 패킷들을 출력 
# tcpdump host security 

security와 mazinga, getarobo 사이에 날아다니고 있는 패킷들을 출력 
# tcpdump host security and ( mazinga or getarobo ) 

security에서 elgaim을 제외한 모든 호스트로 날아다니는 IP 패킷들을 출력 
# tcpdump ip host security and not elgaim 

주의) 아래 필터에서 홑따옴표를 사용하는 것은 쉘이 필터를 해석하지 않도록 하기 위해서이다. 

gateway amurorei를 거치는 ftp에 관련된 패킷들을 출력 
# tcpdump 'gateway amurorei and ( port ftp or ftp-data )' 

local호스트가 아닌 호스트와 로컬호스트가 맺는 TCP 커넥션의 시작과 마지막 패 킷들을 출력한다(SYN, FIN 패킷). 
# tcpdump 'tcp[13] & 3 != 0 and not src and dst net non-local' 

ICMP 패킷들을 출력한다. 
# tcpdump 'ip[9] = 1' 

gateway amurorei를 지나는 576Byte보다 큰 패킷들을 출력한다 
# tcpdump 'gateway amurorei and ip[2:2] > 576' 

Ethernet boradcast 혹은 multicast를 통해서 보내진 것이 아닌, IP broadcast 혹 은 multicast 패킷들을 출력한다. 
# tcpdump 'ehter[0] & 1 = 0 and ip[16] >= 224' 

Echo request/reply가 아닌 ICMP 패킷들을 모두 출력한다. 
# tcpdump 'icmp[0] != 8 and icmp[0] != 0' 

traceroute 탐지 패킷 출력 
(유닉스용 traceroute 는 UDP 데이터 그램을 보냄으로서 작동하므로 
대개 33000-33999 포트에서 탐지된다. 하지만 윈도우용은 ICMP를 사용함.) 
# tcpdump -v 'udp[2:2] >=33000 and udp[2:2] < 34000' 

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

Tcpdump의 평가 
TCPDUMP는 여러모로 좋은 툴이다. libpcap을 거의 100% 활용한 프로그램의 예이며, 실제로 많은 툴들이 TCPDUMP와 병행하여 돌아가거나, TCPDUMP를 기반으로 제작되었다. TCPDUMP의 막강한 packet filter는 현재 로컬 네트워크 상에서 날아다니고 있는 특정한 패킷들을 실시간으로 기록해 줄 수 있으며, 이를 이용하여 네트워크에서 벌어지는 일들을 네트워크 관리자가 원하는 대로 뽑아 볼 수 있게 해 준다. 또한, 시스템 관리자들에게는 로컬 유저의 외부로의 커넥션들을 감시하고, 또 특정 침입자가 침투 경로로 자주 이용하는 호스트, 혹은 원하지 않는 호스트로부터의 커넥션을 실시간으로 감시할 수 있게 해 준다. libpcap을 이용하여 비슷한 툴을 제작하고자 하는 사람들에게도 TCPDUMP는 가장 훌륭한 예제가 될 것이다. 

 

 

 

 

 

 

 

 

 

 

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소