예전에는 윈도우나 주된 OS 기반이 공격 대상이었지만, 요즘 해커들은 서버/클라우드와 같은 인프라까지 노리고 있다.
리눅스용 악성코드도 꾸준히 증가하는 것을 볼 수 있었다. (웹쉘 공격, 트로이 목마 등..)

왜 리눅스가 백신이 필요한지 조사해보았다.
2016년 이전 대부분의 Unix계열의 서버의 경우 별도의 백신이 필요하지 않다고 여겨졌다. 그러나 현재까지 리눅스 시스템을 대상으로 한 3만 가지 이상의 멀웨어가 발견되었으며 그 또한 매년 증가하고 있다. 리눅스 서버를 가장 많이 사용하고 있는 곳은 고객과의 접점이 많은 Web서버이며 전세계 Web서버의 60%이상이 Linux 운영체제를 사용하고 있다. 이 서버들은 운영체제 취약점인 커널 등 사용하고 있는 각종 어플리케이션의 취약점이 공개되어 있음에도 2~3년 전의 취약점에 대한 공격 사례가 다양하게 나타나고 있다.
1. Mirai 봇넷
Mirai 봇넷은 2016년 9월에 발견된 대규모 DDoS 공격을 일으키는 멀웨어였습니다. 이 멀웨어는 Linux 기반의 장비들을 대상으로 공격을 시도하였으며, IP 카메라, 라우터, DVR 등의 IoT 장비들을 감염시켜 거대한 봇넷을 구성하였습니다. 이 봇넷은 대규모 DDoS 공격을 일으켜 인터넷 서비스 중단 사례를 일으켰습니다.
2. FreakOut
2021년 3월에 발견된 FreakOut이라는 멀웨어입니다. 이 멀웨어는 Linux 시스템에서 SSH, Telnet 및 HTTP를 통해 시스템에 침투하고, 백도어를 설치하여 원격으로 시스템을 조종할 수 있습니다. 또한 FreakOut은 시스템에서 채굴 작업을 수행하여 암호화폐를 채굴하는 등의 악의적인 활동을 수행할 수 있습니다.
3. NotPetya 랜섬웨어
NotPetya 랜섬웨어는 2017년 6월에 발생한 대규모 사이버 공격 사례 중 하나였습니다. 이 랜섬웨어는 윈도우즈 뿐만 아니라 Linux 시스템까지 감염시키며 전 세계적으로 약 60개국에서 대규모 공격을 일으켰습니다. 이 랜섬웨어는 일부 Linux 시스템을 감염시켰으며, 이를 통해 Linux 시스템도 멀웨어 공격의 위험에 노출되었습니다.
출처: Trend Micro
이러한 이유로 많은 서버들이 있는 회사에서는 리눅스에 백신이 필요하다고 보았고,
중앙 리눅스 서버에 백신을 두고 Agent 형태로 구축하기로 결정했다고 한다.
신입인 나에게 주어진 과제는 리눅스 서버에 파일 업로드 기능을 구현하여, 업로드된 파일이 백신에 의해 탐지되는지 확인 하는 것이다.
현재는 PoC 작업이라서, 물리로 서버를 둘지 VM으로 둘지는 확정되지 않았다. 하지만 테스트 작업을 위해서 VMware에 linux를 설치하고 테스트할 예정이다.
일단 VM환경이 구성되어 있다는 가정하에 테스트를 실행해보고자 한다.
역시 테스트를 할 때 고려해야 할 사항은 1. 설치가 쉬운지 2. 빠른 개발이 가능한지 3. 가벼운지 이다.
web server도 굳이 필요가 없는 flask를 선택했다.
1. Flask 설치
pip install flask
2. app.py 코드 작성
from flask import Flask, request
import os
UPLOAD_FOLDER='uploads'
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@app.route('/')
def index():
return '''
<h1>파일 업로드</h1>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type=file" name="file">
<input type=submit" value="업로드">
</form>
'''
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
if file.filename != '':
path = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
file.save(path)
return f'{file.filename} 업로드 완료'
return '업로드 실패'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
사실 UI도 필요 없다고 하셨지만..
쉘에서 업로드 하면 불편할 것 같아서 html코드라도 넣었다.
3. 방화벽 포트 열기
sudo ufw allow 5000
---> 이제 다른 PC로 테스트
1. 브라우저 접속
http://<linux server ip>: 5000
2. EICAR (알려진 악성코드 등) 파일 등 업로드
---> DSM 웹 콘솔 접속
악성 파일이 탐지가 되었는지 확인
일단 흐름상 위에와 같은 식으로 생각하고 있다.
방화벽도 많고, 내부망에 제한되어 있어서 아마 수월하게 끝나지 않을 수도 있긴 하지만,,
맡겨주신 만큼 잘 해..내자
예전에는 윈도우나 주된 OS 기반이 공격 대상이었지만, 요즘 해커들은 서버/클라우드와 같은 인프라까지 노리고 있다.
리눅스용 악성코드도 꾸준히 증가하는 것을 볼 수 있었다. (웹쉘 공격, 트로이 목마 등..)

왜 리눅스가 백신이 필요한지 조사해보았다.
2016년 이전 대부분의 Unix계열의 서버의 경우 별도의 백신이 필요하지 않다고 여겨졌다. 그러나 현재까지 리눅스 시스템을 대상으로 한 3만 가지 이상의 멀웨어가 발견되었으며 그 또한 매년 증가하고 있다. 리눅스 서버를 가장 많이 사용하고 있는 곳은 고객과의 접점이 많은 Web서버이며 전세계 Web서버의 60%이상이 Linux 운영체제를 사용하고 있다. 이 서버들은 운영체제 취약점인 커널 등 사용하고 있는 각종 어플리케이션의 취약점이 공개되어 있음에도 2~3년 전의 취약점에 대한 공격 사례가 다양하게 나타나고 있다.
1. Mirai 봇넷
Mirai 봇넷은 2016년 9월에 발견된 대규모 DDoS 공격을 일으키는 멀웨어였습니다. 이 멀웨어는 Linux 기반의 장비들을 대상으로 공격을 시도하였으며, IP 카메라, 라우터, DVR 등의 IoT 장비들을 감염시켜 거대한 봇넷을 구성하였습니다. 이 봇넷은 대규모 DDoS 공격을 일으켜 인터넷 서비스 중단 사례를 일으켰습니다.
2. FreakOut
2021년 3월에 발견된 FreakOut이라는 멀웨어입니다. 이 멀웨어는 Linux 시스템에서 SSH, Telnet 및 HTTP를 통해 시스템에 침투하고, 백도어를 설치하여 원격으로 시스템을 조종할 수 있습니다. 또한 FreakOut은 시스템에서 채굴 작업을 수행하여 암호화폐를 채굴하는 등의 악의적인 활동을 수행할 수 있습니다.
3. NotPetya 랜섬웨어
NotPetya 랜섬웨어는 2017년 6월에 발생한 대규모 사이버 공격 사례 중 하나였습니다. 이 랜섬웨어는 윈도우즈 뿐만 아니라 Linux 시스템까지 감염시키며 전 세계적으로 약 60개국에서 대규모 공격을 일으켰습니다. 이 랜섬웨어는 일부 Linux 시스템을 감염시켰으며, 이를 통해 Linux 시스템도 멀웨어 공격의 위험에 노출되었습니다.
출처: Trend Micro
이러한 이유로 많은 서버들이 있는 회사에서는 리눅스에 백신이 필요하다고 보았고,
중앙 리눅스 서버에 백신을 두고 Agent 형태로 구축하기로 결정했다고 한다.
신입인 나에게 주어진 과제는 리눅스 서버에 파일 업로드 기능을 구현하여, 업로드된 파일이 백신에 의해 탐지되는지 확인 하는 것이다.
현재는 PoC 작업이라서, 물리로 서버를 둘지 VM으로 둘지는 확정되지 않았다. 하지만 테스트 작업을 위해서 VMware에 linux를 설치하고 테스트할 예정이다.
일단 VM환경이 구성되어 있다는 가정하에 테스트를 실행해보고자 한다.
역시 테스트를 할 때 고려해야 할 사항은 1. 설치가 쉬운지 2. 빠른 개발이 가능한지 3. 가벼운지 이다.
web server도 굳이 필요가 없는 flask를 선택했다.
1. Flask 설치
pip install flask
2. app.py 코드 작성
from flask import Flask, request
import os
UPLOAD_FOLDER='uploads'
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@app.route('/')
def index():
return '''
<h1>파일 업로드</h1>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type=file" name="file">
<input type=submit" value="업로드">
</form>
'''
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
if file.filename != '':
path = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
file.save(path)
return f'{file.filename} 업로드 완료'
return '업로드 실패'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
사실 UI도 필요 없다고 하셨지만..
쉘에서 업로드 하면 불편할 것 같아서 html코드라도 넣었다.
3. 방화벽 포트 열기
sudo ufw allow 5000
---> 이제 다른 PC로 테스트
1. 브라우저 접속
http://<linux server ip>: 5000
2. EICAR (알려진 악성코드 등) 파일 등 업로드
---> DSM 웹 콘솔 접속
악성 파일이 탐지가 되었는지 확인
일단 흐름상 위에와 같은 식으로 생각하고 있다.
방화벽도 많고, 내부망에 제한되어 있어서 아마 수월하게 끝나지 않을 수도 있긴 하지만,,
맡겨주신 만큼 잘 해..내자