🔒 보안도구의 끝판왕: OSQuery로 엔드포인트 보안 모니터링 마스터하기 🕵️♀️
안녕하세요, 보안 덕후 여러분! 오늘은 엔드포인트 보안의 핫한 트렌드, OSQuery에 대해 깊이 파헤쳐볼 거예요. 이 글을 다 읽고 나면 여러분도 OSQuery 마스터가 될 수 있을 거예요! ㅋㅋㅋ 자, 그럼 시작해볼까요? 🚀
💡 Pro Tip: OSQuery는 Facebook이 개발한 오픈소스 도구로, SQL 쿼리를 사용해 운영 체제의 로우 레벨 정보를 쉽게 수집할 수 있어요. 완전 꿀템이죠!
1. OSQuery, 도대체 뭐길래? 🤔
OSQuery는 마치 운영 체제를 하나의 거대한 데이터베이스처럼 다룰 수 있게 해주는 마법 같은 도구예요. 윈도우, 맥OS, 리눅스 등 다양한 운영 체제에서 사용할 수 있어서 진짜 편리하죠. 이 도구를 사용하면 시스템의 상태를 실시간으로 모니터링하고, 보안 위협을 빠르게 탐지할 수 있어요.
OSQuery의 가장 큰 장점은 바로 SQL 문법을 사용한다는 거예요.
SQL을 조금이라도 아는 사람이라면 누구나 쉽게 사용할 수 있죠. 데이터베이스 쿼리하듯이 시스템 정보를 조회할 수 있으니까 완전 직관적이에요!
위의 그림을 보면 OSQuery가 어떻게 작동하는지 한눈에 알 수 있죠? 운영 체제의 정보를 SQL 쿼리로 쉽게 가져올 수 있다니, 정말 혁신적이지 않나요? 😎
2. OSQuery 설치하기: 초보자도 할 수 있어요! 💪
자, 이제 OSQuery를 설치해볼 차례예요. 걱정 마세요, 생각보다 훨씬 쉬워요!
윈도우에 설치하기
- OSQuery 공식 웹사이트(https://osquery.io)에서 윈도우용 인스톨러를 다운로드해요.
- 다운로드한 인스톨러를 실행하고 설치 마법사의 지시를 따라가면 끝!
맥OS에 설치하기
맥 사용자라면 Homebrew를 이용해 쉽게 설치할 수 있어요.
brew update
brew install osquery
리눅스에 설치하기
우분투나 데비안 계열이라면 다음 명령어로 설치할 수 있어요.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo add-apt-repository "deb [arch=amd64] https://pkg.osquery.io/deb deb main"
sudo apt update
sudo apt install osquery
🎉 축하해요! 이제 OSQuery가 여러분의 시스템에 설치되었어요. 보안의 세계로 한 걸음 더 다가갔네요!
3. OSQuery 기본 사용법: SQL로 시스템을 해킹(?)해보자! 🕵️♂️
OSQuery를 설치했다면 이제 실제로 사용해볼 차례예요. OSQuery는 osqueryi라는 대화형 쉘을 제공해요. 이 쉘에서 SQL 쿼리를 실행해 시스템 정보를 조회할 수 있죠.
터미널이나 명령 프롬프트를 열고 다음 명령어를 입력해보세요:
osqueryi
짜잔! OSQuery 쉘에 들어왔어요. 이제 SQL 쿼리를 사용해 시스템 정보를 조회할 수 있어요.
기본적인 쿼리 예시
- 실행 중인 프로세스 목록 조회하기
- 설치된 애플리케이션 목록 보기
- 네트워크 연결 상태 확인하기
- 사용자 계정 정보 조회하기
SELECT name, pid, path FROM processes;
SELECT name, version, install_location FROM apps;
SELECT * FROM listening_ports;
SELECT * FROM users;
이런 식으로 SQL 쿼리를 사용해 시스템의 거의 모든 정보를 조회할 수 있어요. 완전 쩐다, 그쵸? ㅋㅋㅋ
위 그림을 보면 OSQuery가 어떻게 작동하는지 한눈에 알 수 있죠? SQL 쿼리를 입력하면 OSQuery 엔진이 이를 해석하고, 운영 체제에서 필요한 정보를 가져와 결과를 출력해요. 정말 간단하고 효율적이죠?
4. OSQuery로 엔드포인트 보안 모니터링하기: 보안 전문가처럼! 🦸♀️
자, 이제 OSQuery의 기본을 알았으니 실제로 엔드포인트 보안 모니터링에 어떻게 활용할 수 있는지 알아볼까요?
1. 의심스러운 프로세스 탐지하기
악성 프로세스는 종종 이상한 이름을 가지고 있거나, 특이한 경로에서 실행돼요. 다음 쿼리로 의심스러운 프로세스를 찾아볼 수 있어요.
SELECT name, path, pid
FROM processes
WHERE path NOT LIKE 'C:\Windows\%'
AND path NOT LIKE 'C:\Program Files\%'
AND path NOT LIKE 'C:\Program Files (x86)\%';
이 쿼리는 일반적인 Windows 시스템 경로 외에서 실행되는 프로세스를 찾아내요. 물론 모든 결과가 악성은 아니겠지만, 의심스러운 놈들을 골라내는 데 도움이 되죠!
2. 비정상적인 네트워크 연결 탐지하기
해커들은 종종 특이한 포트를 통해 시스템에 접근하려고 해요. 다음 쿼리로 비정상적인 네트워크 연결을 찾아볼 수 있어요.
SELECT DISTINCT processes.name, listening_ports.port, listening_ports.address, processes.pid
FROM processes
JOIN listening_ports ON processes.pid = listening_ports.pid
WHERE listening_ports.port > 1024;
이 쿼리는 1024번 이상의 포트를 사용하는 프로세스를 찾아내요. 대부분의 표준 서비스는 1024번 이하의 포트를 사용하니, 이 범위를 벗어나는 연결은 주의 깊게 살펴볼 필요가 있죠.
3. 최근에 수정된 파일 확인하기
악성 프로그램이 시스템에 침투하면 종종 파일을 수정하거나 새로운 파일을 생성해요. 다음 쿼리로 최근에 수정된 파일을 확인할 수 있어요.
SELECT path, filename, mtime
FROM file
WHERE path LIKE 'C:\Users\%'
AND mtime > (SELECT datetime('now', '-1 day'))
ORDER BY mtime DESC
LIMIT 20;
이 쿼리는 지난 24시간 동안 사용자 디렉토리에서 수정된 파일 20개를 보여줘요. 갑자기 이상한 파일이 생겼다면 뭔가 수상한 거겠죠?
4. 자동 실행 프로그램 확인하기
많은 악성 프로그램들이 시스템 시작 시 자동으로 실행되도록 설정돼요. 다음 쿼리로 자동 실행 프로그램 목록을 확인할 수 있어요.
SELECT name, path, source
FROM startup_items;
이 목록에서 낯선 프로그램을 발견했다면, 꼭 확인해보세요! 악성 프로그램일 수도 있으니까요.
5. USB 장치 모니터링하기
USB 장치를 통한 악성 코드 유입도 흔한 공격 방법이에요. 다음 쿼리로 시스템에 연결된 USB 장치를 확인할 수 있어요.
SELECT * FROM usb_devices;
이 쿼리로 현재 연결된 모든 USB 장치의 정보를 볼 수 있어요. 낯선 장치가 보인다면 주의가 필요해요!
🎓 Mini Quiz: OSQuery로 어떤 정보를 조회할 수 있을까요?
- 실행 중인 프로세스
- 네트워크 연결 상태
- 설치된 애플리케이션
- 시스템 사용자 정보
정답: 모두 다! OSQuery는 이 모든 정보를 쉽게 조회할 수 있어요. 대단하죠? 😎
5. OSQuery의 고급 기능: 프로 보안 전문가 되기 🏆
지금까지 OSQuery의 기본적인 사용법을 알아봤어요. 이제 좀 더 고급 기능을 살펴볼까요? 이 부분을 마스터하면 여러분도 프로 보안 전문가가 될 수 있어요!
1. 스케줄링된 쿼리 실행하기
OSQuery는 osqueryd라는 데몬 프로세스를 제공해요. 이를 이용하면 주기적으로 쿼리를 실행하고 결과를 로그로 저장할 수 있죠.
먼저, 설정 파일을 만들어야 해요. 다음과 같은 내용의 osquery.conf 파일을 만들어보세요:
{
"schedule": {
"process_check": {
"query": "SELECT name, path, pid FROM processes WHERE path NOT LIKE 'C:\\Windows\\%';",
"interval": 3600
},
"network_check": {
"query": "SELECT * FROM listening_ports WHERE port > 1024;",
"interval": 3600
}
}
}
이 설정 파일은 1시간(3600초)마다 의심스러운 프로세스와 비정상적인 네트워크 연결을 확인하는 쿼리를 실행해요.
이제 다음 명령어로 osqueryd를 실행하세요:
osqueryd --config_path=osquery.conf --verbose
이렇게 하면 OSQuery가 백그라운드에서 계속 실행되면서 주기적으로 시스템을 모니터링해요. 완전 편하죠? ㅋㅋㅋ
2. 파일 무결성 모니터링 (FIM)
OSQuery의 강력한 기능 중 하나가 바로 파일 무결성 모니터링이에요. 중요한 시스템 파일이 변경되면 즉시 알 수 있죠.
osquery.conf 파일에 다음 내용을 추가해보세요:
{
"file_paths": {
"system": [
"C:\\Windows\\System32\\drivers\\etc\\hosts",
"C:\\Windows\\System32\\config\\SAM"
]
}
}
이 설정은 hosts 파일과 SAM 파일의 변경을 모니터링해요. 이 파일들이 변경되면 해킹의 징후일 수 있으니 주의 깊게 봐야 해요!
3. 이벤트 기반 모니터링
OSQuery는 실시간으로 시스템 이벤트를 모니터링할 수 있어요. 예를 들어, 새로운 프로세스가 시작될 때마다 알림을 받을 수 있죠.
osquery.conf 파일에 다음 내용을 추가해보세요:
{
"events": {
"windows_events": {
"event_categories": ["process_creation"],
"event_sources": ["Microsoft-Windows-Security-Auditing"]
}
}
}
이 설정으로 Windows 시스템에서 새로운 프로세스가 생성될 때마다 이벤트를 캡처할 수 있어요. 악성 프로그램의 실행을 실시간으로 탐지할 수 있는 거죠!
4. 사용자 정의 테이블 만들기
OSQuery의 또 다른 강력한 기능은 사용자 정의 테이블을 만들 수 있다는 거예요. 예를 들어, 특정 레지스트리 키를 모니터링하고 싶다면 다음과 같은 테이블을 만들 수 있어요:
CREATE TABLE custom_registry (
path TEXT,
name TEXT,
type TEXT,
data TEXT
);
INSERT INTO custom_registry
SELECT path, name, type, data
FROM registry
WHERE path LIKE 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run%';
이 쿼리는 Windows의 자동 실행 프로그램 레지스트리 키를 모니터링하는 사용자 정의 테이블을 만들어요. 이제 'SELECT * FROM custom_registry;'로 언제든 이 정보를 조회할 수 있죠!
5. 분산 쿼리 사용하기
여러 대의 컴퓨터를 한 번에 모니터링해야 한다면? OSQuery의 분산 쿼리 기능을 사용하면 돼요!
먼저, 중앙 서버를 설정하고 각 클라이언트에 다음과 같은 설정을 추가해요:
{
"options": {
"distributed_interval": 60,
"distributed_tls_max_attempts": 3,
"distributed_tls_read_endpoint": "/distributed_read",
"distributed_tls_write_endpoint": "/distributed_write",
"distributed_plugin": "tls"
}
}
이렇게 하면 모든 클라이언트가 60초마다 중앙 서버에 연결해서 새로운 쿼리를 받아오고 결과를 전송해요. 대규모 네트워크 모니터링이 한결 쉬워지죠!
💡 Pro Tip: OSQuery를 사용할 때는 항상 최신 버전을 유지하세요. 보안 도구인 만큼, 새로운 취약점이 발견되면 빠르게 패치가 이뤄지니까요!
6. OSQuery의 실제 활용 사례: 현장에서는 이렇게 써요! 🕵️♂️
지금까지 OSQuery의 이론과 기본적인 사용법을 알아봤어요. 이제 실제 현장에서 OSQuery가 어떻게 활용되고 있는지 몇 가지 사례를 통해 살펴볼까요?
1. 랜섬웨어 탐지
랜섬웨어는 현대 기업의 큰 위협이 되고 있어요. OSQuery를 사용하면 랜섬웨어의 활동을 초기에 탐지할 수 있어요.