'Security' + 19

2018년 1월 4일, 인텔 CPU 취약점 발표

사실 이 취약점으로 클라이언트 공격하느니... 웹브라우저 취약점을 통해 공격하는게 훨씬 수월할듯 하지만....
언론에 노출이 많이되고있따... 대응을 해야한다 우리도

*알약 블로그를 참조했으며 중간중간 확인한 부분 덧붙였습니다.



원문 참고 : https://meltdownattack.com/

Jann Horn 등 보안연구원들은 ”Meltdown (붕괴)”(CVE-2017-5754)과 ”Spectre (유령)”(CVE-2017-5753 & CVE-2017-5715) 라고 명명된 2개의 CPU 취약점을 공개, 악용된다면 로컬 메모리의 데이터가 유출되므로 암호화 되지 않은 데이터가 그대로 유출되어 중요정보가 탈취될 수 있다.

보통은 임의로 시스템 메모리에 액세스 하지 못하지만 Meltdown 으로 메모리에 접근 못하도록 하는것을 파괴하여 액세스 가능하도록 하며, 
Spectre 으로 메모리 위치에 접근하여 정보를 탈취를 합니다. 


        

        



CPU 취약점 동작원리

최신 CPU들은 처리 속도를 조금이라도 더 향상시키기 위해서 여러 기술들을 도입하였는데,
그것들 중에서 이번 이슈와 관련되는 기술은 예측실행(Speculative Execution)과 분기 예측(Indirect Branch Prediction) 기술

이 기술은 이미 약 20년 전(1995년) 부터 사용하기 시작

프로세서는 한가지 명령에 대한 처리가 끝나면 다른 명령을 받기 전까지 어떠한 작업도 하지 않는다.
하지만 최적화 기술이 적용된 최신 프로세서들은 명령을 받지 않아도 다음에 실행될 명령들을 예측하여 해당 명령을 처리하기 위해
필요한 데이터들을 CPU 캐시에 로드해 놓는 방법을 통해 CPU성능을 향상한다.


[ 정상적인 프로세스 과정 ]

명령1을 실행하면서 명령2에 필요한 데이터를 준비해 놓는다.

명령2를 실행하면서 명령3에 필요한 데이터를 준비해 놓는다.

명령3을 실행하면서 명령4에 필요한 메모리를 CPU에 로드해 놓는다

캐시 메모리 중의 데이터를 읽는다.


이 과정에서,
만약 컴퓨터가 올바르게 예측하여 예측한 명령이 처리된다면 CPU의 속도가 빨라지겠지만,
잘못 예측을 하였다면 해당 작업을 취소하고 예측 전의 단계로 돌아가게 됩니다. 


하지만 프로세서들의 파이프 라인이 예측 전의 상태로 돌아가지만,
예측한 명령을 실행하기 위해 CPU캐시에 로드해 놓았던 데이터들은 여전히 남아있게 됩니다. 



[ 프로세스 과정 중 오류 발생 ]

명령1을 실행하면서 명령2에 필요한 데이터를 준비해 놓는다.

명령2를 실행하면서 명령3에 필요한 데이터를 준비해 놓는다.

명령3을 실행 오류, 명령4에 필요한 메모리를 CPU에 로드해 놓는다

실행 오류


예측실행 기능을 가진 CPU의 실행과정 중,
명령 4가 필요한 메모리 로드 사이클은 명령 3이 정상 실행 여부와는 상관없이 예측하여 메모리 캐시에 로드시켜 놓습니다.
 > 이 과정에서 메모리의 적합성 여부는 판단하지 않습니다. 


만약 명령 3의 예측과정에서 오류가 발생한다면,
명령 4는 실행되지 않지만, 명령 4를 수행하기 위해 필요한 데이터들은 이미 CPU 캐시에 로드되어 있는 상태가 됩니다.

 > 이렇게 CPU 캐시에 로드된 데이터들 중에는 관리자 권한으로만 접근이 가능한 데이터들도 포함되어 있을 경우도 있는데, 이때 로드되어 있는 메모리들에 비정상적으로 접근하거나 권한이 없는 사용자가 접근을 하여도 모두 허용하게 됩니다. 


그 이유는, CPU는 CPU 캐시에서 레지스터로 전송까지 일련의 매커니즘을 통하여 주소의 적합성 여부를 판단하는데, CPU 분기 예측 과정에서 오류가 발생하였고, CPU 캐시메모리로의 로드 까지만 실행되었으며 레지스터로의 전송 과정(즉 일련의 매커니즘)이 완료되지 않았기 때문에, 해당 캐시 메모리에 대한 어떠한 비정상적인 접근도 모두 허용하게 되는 것입니다.



Meltdown 취약점


Meltdown 취약점은 권한상승 취약점으로 현재까지는 인텔에서 생산된 CPU에만 존재하는 것으로 알려져 있습니다.


멜트다운은 인텔 microarchitectural을 타겟으로 하는 공격으로서, 비순차적인 실행 방법을 이용하는 사용자의 커널 메모리를 유출시킬 수 있습니다.


공격자는 멜트다운 취약점을 이용해 프로세서에 있는 권한 상승 취약점을 공격합니다. CPU의 예측 실행 기능을 이용하면 공격자가 메모리 보호를 우회할 수 있기 때문입니다


해당 취약점을 이용하면 사용자 공간에서 커널 메모리에 접근하도록 허용합니다. 이는 즉 사용자가 시스템 내부에 존재하는 보안 매커니즘(심지어 커널에 포함되어 있는 내용)과 관련된 다양한 코드 등에 접근할 수 있도록 허용하여 다양한 정보들이 유출될 가능성이 있습니다. 



Spectre 취약점


Spectre 취약점은 Intel, ARM 및 AMD 프로세서에 존재하는 취약점으로, 프로세서로 하여금 실행해서는 안되는 코드를 실행하도록 유도하여 다른 어플리케이션 메모리 공간에 존재하는 정보를 유출시킬 수 있는 취약점입니다. 


프로세서는 일부 조건 분기, 예를 들어 if else가 성립되지 않는 상황 등에서는 먼저 해당 조건 안에 있는 코드를 먼저 실행하며, 발생 조건이 맞지 않는다면 해당 결과를 버리게 됩니다. 


Spectre 취약점은 이러한 특성을 이용한 것입니다.  CPU가 분기가 맞는지 맞지 않는지 판단을 하기 전에 분기 내부에 포함되어 있는 코드(즉 공격자가 악의적인 목적으로 작성해놓은 코드)를 실행시킨다면 결과적으로 일부 데이터가 L1 cache에 저장되게 됩니다. 그 후 이 데이터에 접근한 시간을 통하여 어떠한 데이터가 캐시에 저장되었는지 추측한 후, 다시 역순으로 실행을 통해 자신의 메모리 경계선을 넘어 메모리를 읽어올 수 있습니다. 





Meltdown 취약점과 Spectre 취약점 차이점


Meltdown 취약점과 Spectre 취약점은 모두 CPU 취약점 이지만, 두 취약점의 차이점은 분명합니다. 


 

 

 Meltdown 취약점

 Spectre 취약점

 아키텍쳐

 인텔

인텔,ARM,AMD 

 엔트리

해당 시스템에서 코드 실행 

해당 시스템에서 코드 실행 

 메서드 

인텔 권한 상승 + 예측 실행 

브랜치 예측 + 예측 실행 

 영향

 사용자 공간에서 커널 메모리 읽기

프로그램을 실행하는 다른 사용자로부터 메모리 읽기 

 대응 

 소프트웨어 패치 

소프트웨어 패치 


대응상황


윈도우 사용자들은 2017년 1월 3일날 발표된 보안패치 KB40568XX를 적용하면 Meltdown 취약점과 Spectre 취약점을 해결할 수 있습니다. 


하지만 해당 보안패치 적용 시 일부 제품들과 호환성 문제 때문에 BSOD가 발생하는 경우가 확인되었고, 이에 MS에서는 자동업데이트가 아닌 레지스트리가 셋팅되어 있는 고객들에 한해서만 패치를 내려준다고 밝혔습니다. 


레지스트리값 :


Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat" Value="cadca5fe-87d3-4b96-b7fb-a231484277cc" Type="REG_DWORD"






만약 해당 레지스트리 셋팅 프로그램 실행 후 블루스크린이 발생한다면 해당 업데이트 파일을 삭제해 주시면 됩니다. 



삭제방법 


1. 안전모드로 부팅 (▶컴퓨터 안전모드로 부팅하는 방법 보러가기)


2. 제어판 – 프로그램 제거 클릭


3. Kb4056892 업데이트 제거 (Windows 10 Version 1709 for 32-bit Systems 기준)





* 다른 버전 OS의 KB 번호는 해당 링크 참고

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002



  • Windows 10 RS3 Version 1709 운영 체제 : KB4056892
  • Windows 10 RS2 Version 1703 운영 체제 : KB4056891
  • Windows 10 RS1 Version 1607 운영 체제 : KB4056890



주요 제품군 패치 대응 상황 공유


▶ 레드헷(Redhat)


레드햇에서 제공하는 업데이트 패치 적용




▶ 구글 크롬(Chrome) 브라우저


1) 크롬 브라우저를 실행합니다. 


2) 주소창에 chrome://flags/#enable-site-per-process를 입력합니다. 


3) 사이트 격리 옆에있는 ‘활성화’ 버튼을 클릭합니다(해당 버튼이 안보일 경우 크롬 업데이트 필요)


4) 크롬 브라우저를 재시작 합니다.



▶  VMware


ESXi 5.5, 6.0 및 6.5 버전은 VMware에서 제공하는 패치 설치

Workstation 12.x는 12.5.8 버전으로 업데이트

Fusion 8.x는 8.5.9 버전으로 업데이트



기타 벤더사들 관련 보안공지


Intel

https://newsroom.intel.com/news/intel-responds-to-security-research-findings/

https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr


Microsoft

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002


Amazon

https://aws.amazon.com/de/security/security-bulletins/AWS-2018-013/


ARM

https://developer.arm.com/support/security-update


Android

https://source.android.com/security/bulletin/2018-01-01


Google

https://googleprojectzero.blogspot.co.at/2018/01/reading-privileged-memory-with-side.html

https://www.chromium.org/Home/chromium-security/ssca


MITRE

http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5715

http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5753

http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5754


Xen

http://xenbits.xen.org/xsa/advisory-254.html


Mozilla

https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/


AMD

https://www.amd.com/en/corporate/speculative-execution


NVIDIA

https://forums.geforce.com/default/topic/1033210/geforce-drivers/nvidias-response-to-speculative-side-channels-cve-2017-5753-cve-2017-5715-and-cve-2017-5754/



윈도우 10
레지스트리는 있지만 업데이트 리스트에는 확인되지 않고있음...
업데이트 기록에도 없고 이미 설치된 기록에도 없고









윈도우 서버 2012














공감 버튼누르기 어렵지 않아요~~~!!! ^.^


♡♥ 공감 ♥♡ 버튼 눌러주세요 










,
  1. Apache 설정하기
yum 업데이트
설치
부팅시 자동시작
아파치 시작
yum -y update
yum -y install httpd
systemctl enable httpd.service
systemctl start httpd


  1. php 설치하기

php 버전확인
yum list | grep php


기본으로 지원하는 버전은 php5버전
php7버전을 다운받으려면 저장소를 추가한다
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

버전을 변경한 경우 아래와 같이 다운로드

yum --enablerepo=epel,remi install httpd mod_ssl
systemctl start httpd
systemctl enable httpd
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

php 설치
아파치 재시작
yum -y install php php-mysql php-gd php-pear
systemctl restart httpd.service



  1. SSL 설정하기
아파치만 설치할 경우 기본으로 80만 서비스하게 된다
mod_ssl이 설치되어야 ssl.conf 로 443을 서비스 할 수 있다.

httpd 버전확인
mod_ssl 모듈 확인
mod_ssl 이 없다면 설치
/usr/local/apache/bin/httpd –v
/usr/sbin/httpd -l
yum -y install mod_ssl
find / -name ssl.conf
etc/httpd/conf.d/ssl.conf

Apache에 SSL 을 설치하기 위해서는 mod_ssl모듈이 설치되어 있어야 한다.
Apache는 두 가지 방식으로 모듈 설치를 지원하고 있으며, 정적일 경우와 동적일 경우 로 나뉜다.
정적인 방식의 경우 mod_ssl.c 이 없을 경우, Apache를 재 설치하여야 한다.
동적인 방식의 경우 mod_so.c 를 확인 후, module 디렉터리 내에 mod_ssl.so 이 있는지 확인 해야한다.


[ 인증서가 별도로 없을 경우 ]
아래부터는 인증서가 별도로 없을 경우 openssl로 생성 후 적용하기 위한 단계이다.
이미 공인으로 인증서를 발급받았을 경우 skip 한다.

openssl 있는지 확인
openssl 이 설치되어 있지 않은 경우, 설치해 주어야 합니다.
rpm –qa |grep openssl
yum –y install openssl-*

개인키 생성 - SSL 인증서를 보관할 디렉터리로 이동
개인키를 생성
생성한 개인키로 csr 파일을 생성.
cd /home/SSL
openssl genrsa -des3 -out [개인키파일명].key 1024 [개인키 암호 입력]
openssl req -new -key [개인키파일명].key -out [CSR파일명].csr

예시) 도메인이 www.ksidc.net 일 경우,

Country Name ( 국가코드) [] : KR State or Province Name ( 지역 ) [] : Seoul Locality Name ( 시/군/구 ) [] : Gangnam Organization Name ( 회사명 ) [] : company IDC Organizational Unit Name ( 부서명 ) [] : security Common Name ( 서비스도메인명 ) [] : www.domain.com Email Address [] :


개인키 및 CSR 파일 생성 완료.
생성한 CSR 파일 확인 방법 root@localhost# openssl req -noout -text -in [CSR파일명].csr
생성한 CSR 파일의 내용을 복사하여, 인증서 발급기관에 발송

cat [CSR파일명].csr
※ 복사한 CSR 파일 내용을 인증기관의 메일로 붙여 넣기 하여 보낸다. 
또는, 고객이 신청한 신청서와 인증서(CSR) 파일을 같이 첨부하여 인증기관 메일 로 보낸다.
※ 복사하여 붙여 넣을 때엔 „-----BEGIN‟ 부터 „REQUEST-----‟ 까지 모두 복사하 여야 한다.
 인증서 설치 - 인증기관에서 발급 받은 인증서를 서버에 업로드 한 뒤, httpd.conf와 httpd-ssl.conf 을 수정.
※ SSL 설정 파일 경로의 경우, Apache 버전 및 설치 환경에 따라 다르며, yum 으로 설치했을 경우, /etc/httpd/conf.d/ssl.conf 에 위치.



서비스 재실행
서비스 재실행, 환경설정에 오류가 있는지 확인.
service httpd restart
/usr/local/apache/bin/apachectl configtest

※ Syntax OK 라고 메시지가 나와야 설정에 문제가 없을 경우 나오는 메시지, 아닐 경우 error 메시지 출력

설정 파일에 문제가 없을 경우, 아래 명령어를 실행하여 서비스를 재실행합니다.

인증서 확인 - 웹 브라우저에서
https://도메인 입력시 인증서가 보이는지 확인.


제일 끝에 아래내용 넣기


vi /etc/httpd/conf/httpd.conf
인증서 경로의 이름 변경

SSLCertificateFile /etc/pki/tls/certs/cert_name.crt SSLCertificateKeyFile /etc/pki/tls/private/cert_name.key


# SSL Virtual host add
NameVirtualHost *:443

# SSL Virtual host add

    SSLEngine on
#    SSLCertificateFile /etc/pki/tls/certs/ca.crt
#    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    SSLCertificateFile /etc/pki/tls/certs/domain.com.pem
    SSLCertificateKeyFile /etc/pki/tls/private/domain.com.key
    ServerAdmin security@domain.com
    DocumentRoot /var/www/html
    ServerName www.domain.net
    ErrorLog logs/ssl_starkapin_com_error_log
    CustomLog logs/ssl_starkapin_com_error_log common



# -> 인증서 만들때 설정해준 사용자명 혹은 서버 호스트명은 ServerAdmin과 ServerName에 똑같이 적어준다

-  서버 개인키와 인증서 관련 명령어

구   분 명   령   어
Key 생성  openssl genrsa -dec3 -out 도메인.key 1024
Key 확인 openssl rsa -noout -text -in 도메인.key
CSR 생성 openssl req -new -key 도메인.key -out 도메인.csr
CSR 확인 openssl req -noout -text -in 도메인.csr
인증서 내용 확인 openssl x509 –noout –text –in 도메인.crt
원격지 인증서 확인 openssl s_client –connect URL:Port
Key 패스워드 변경 openssl rsa -des3 -in 도메인.key -out 도메인_new.key
Key 패스워드 삭제 openssl rsa -in 도메인.key -out 도메인_new.key
삭제한 패스워드 복구 openssl rsa -in 도메인.key -des3 -out 도메인_new.key

2. 인증서 형식 변환 명령어

구   분 명   령   어
DER을 PEM형식으로 x509 -in cert.cer -inform DER -out cert.pem -outform PEM
PEM을 DER형식으로 x509 -in cert.pem -inform PEM -out cert.der -outform DER
PFX에서 키 추출 pkcs12 –in filename.pfx –nocerts –out key.pem
PFX에서 인증서 추출 pkcs12 –in filename.pfx –clcerts –nokeys –out cert.pem










,

[ Windows ] Powershell 명령어

Security/Server | 2017. 7. 5. 09:28 | 까까까


공감 버튼누르기 어렵지 않아요~~~!!! ^.^


♡♥ 공감 ♥♡ 버튼 눌러주세요 







Powershell 지원 명령어

 

   명령어
   분류
   간단한 설명

ac

Alias

Add-Content

asnp

Alias

Add-PSSnapin

clc

Alias

Clear-Content

cli

Alias

Clear-Item

clp

Alias

Clear-ItemProperty

clv

Alias

Clear-Variable

cpi

Alias

Copy-Item

cpp

Alias

Copy-ItemProperty

cvpa

Alias

Convert-Path

diff

Alias

Compare-Object

epal

Alias

Export-Alias

epcsv

Alias

Export-Csv

fc

Alias

Format-Custom

fl

Alias

Format-List

foreach

Alias

ForEach-Object

%

Alias

ForEach-Object

ft

Alias

Format-Table

fw

Alias

Format-Wide

gal

Alias

Get-Alias

gc

Alias

Get-Content

gci

Alias

Get-ChildItem

gcm

Alias

Get-Command

gdr

Alias

Get-PSDrive

ghy

Alias

Get-History

gi

Alias

Get-Item

gl

Alias

Get-Location

gm

Alias

Get-Member

gp

Alias

Get-ItemProperty

gps

Alias

Get-Process

group

Alias

Group-Object

gsv

Alias

Get-Service

gsnp

Alias

Get-PSSnapin

gu

Alias

Get-Unique

gv

Alias

Get-Variable

gwmi

Alias

Get-WmiObject

iex

Alias

Invoke-Expression

ihy

Alias

Invoke-History

ii

Alias

Invoke-Item

ipal

Alias

Import-Alias

ipcsv

Alias

Import-Csv

mi

Alias

Move-Item

mp

Alias

Move-ItemProperty

nal

Alias

New-Alias

ndr

Alias

New-PSDrive

ni

Alias

New-Item

nv

Alias

New-Variable

oh

Alias

Out-Host

rdr

Alias

Remove-PSDrive

ri

Alias

Remove-Item

rni

Alias

Rename-Item

rnp

Alias

Rename-ItemProperty

rp

Alias

Remove-ItemProperty

rsnp

Alias

Remove-PSSnapin

rv

Alias

Remove-Variable

rvpa

Alias

Resolve-Path

sal

Alias

Set-Alias

sasv

Alias

Start-Service

sc

Alias

Set-Content

select

Alias

Select-Object

si

Alias

Set-Item

sl

Alias

Set-Location

sleep

Alias

Start-Sleep

sort

Alias

Sort-Object

sp

Alias

Set-ItemProperty

spps

Alias

Stop-Process

spsv

Alias

Stop-Service

sv

Alias

Set-Variable

tee

Alias

Tee-Object

where

Alias

Where-Object

?

Alias

Where-Object

write

Alias

Write-Output

cat

Alias

Get-Content

cd

Alias

Set-Location

clear

Alias

Clear-Host

cp

Alias

Copy-Item

h

Alias

Get-History

history

Alias

Get-History

kill

Alias

Stop-Process

lp

Alias

Out-Printer

ls

Alias

Get-ChildItem

mount

Alias

New-PSDrive

mv

Alias

Move-Item

popd

Alias

Pop-Location

ps

Alias

Get-Process

pushd

Alias

Push-Location

pwd

Alias

Get-Location

r

Alias

Invoke-History

rm

Alias

Remove-Item

rmdir

Alias

Remove-Item

echo

Alias

Write-Output

cls

Alias

Clear-Host

chdir

Alias

Set-Location

copy

Alias

Copy-Item

del

Alias

Remove-Item

dir

Alias

Get-ChildItem

erase

Alias

Remove-Item

move

Alias

Move-Item

rd

Alias

Remove-Item

ren

Alias

Rename-Item

set

Alias

Set-Variable

type

Alias

Get-Content

Get-Command

Cmdlet

Cmdlet 및 Windows Power...

Get-Help

Cmdlet

Windows PowerShell cmd...

Get-History

Cmdlet

현재 세션 중에 입력된 명령 목록을 가져...

Invoke-History

Cmdlet

세션 기록에서 명령을 실행합니다.

Add-History

Cmdlet

세션 기록에 항목을 추가합니다.

ForEach-Object

Cmdlet

각 입력 개체 집합에 대해 작업을 수행합니다.

Where-Object

Cmdlet

명령 파이프라인을 따라 전달될 개체를 제...

Set-PSDebug

Cmdlet

스크립트 디버깅 기능을 설정/해제하고 추...

Add-PSSnapin

Cmdlet

하나 이상의 Windows PowerSh...

Remove-PSSnapin

Cmdlet

현재 콘솔에서 Windows PowerS...

Get-PSSnapin

Cmdlet

컴퓨터의 Windows PowerShel...

Export-Console

Cmdlet

다시 사용하거나 공유할 수 있도록 현재 ...

Start-Transcript

Cmdlet

Windows PowerShell의 전체...

Stop-Transcript

Cmdlet

기록을 중지합니다.

Add-Content

Cmdlet

지정된 항목에 내용을 추가합니다.

Clear-Content

Cmdlet

파일에서 텍스트를 삭제하는 것과 같이 항...

Clear-ItemProperty

Cmdlet

속성 값을 삭제하지만 속성 자체는 삭제하...

Join-Path

Cmdlet

경로와 하위 경로를 단일 경로로 결합합니...

Convert-Path

Cmdlet

Windows PowerShell 경로에...

Copy-ItemProperty

Cmdlet

지정된 위치에서 다른 위치로 속성 및 값...

Get-EventLog

Cmdlet

로컬 이벤트 로그 또는 해당 이벤트 로그...

Get-ChildItem

Cmdlet

하나 이상의 지정된 위치에서 항목 및 하...

Get-Content

Cmdlet

지정된 위치에 있는 항목의 내용을 가져옵니다.

Get-ItemProperty

Cmdlet

지정된 항목의 속성을 검색합니다.

Get-WmiObject

Cmdlet

WMI 클래스의 인스턴스 또는 사용 가능...

Move-ItemProperty

Cmdlet

항목의 위치를 이동합니다.

Get-Location

Cmdlet

현재 작업 위치에 대한 정보를 가져옵니다.

Set-Location

Cmdlet

현재 작업 위치를 지정된 위치로 설정합니다.

Push-Location

Cmdlet

현재 위치를 스택에 밀어넣습니다.

Pop-Location

Cmdlet

현재 위치를 가장 최근에 스택에 밀어넣은...

New-PSDrive

Cmdlet

새 Windows PowerShell 드...

Remove-PSDrive

Cmdlet

Windows PowerShell 드라이...

Get-PSDrive

Cmdlet

Windows PowerShell 드라이...

Get-Item

Cmdlet

지정된 위치에 있는 항목을 가져옵니다.

New-Item

Cmdlet

네임스페이스에 새 항목을 만듭니다.

Set-Item

Cmdlet

항목의 값을 명령에 지정된 값으로 변경합니다.

Remove-Item

Cmdlet

지정된 항목을 삭제합니다.

Move-Item

Cmdlet

항목의 위치를 이동합니다.

Rename-Item

Cmdlet

Windows PowerShell 공급자...

Copy-Item

Cmdlet

네임스페이스 내의 다른 위치로 항목을 복...

Clear-Item

Cmdlet

항목의 내용을 삭제하지만 항목 자체는 삭...

Invoke-Item

Cmdlet

지정된 항목에 대한 공급자 기본 작업을 ...

Get-PSProvider

Cmdlet

지정된 Windows PowerShell...

New-ItemProperty

Cmdlet

특정 위치에 있는 항목의 새 속성을 설정...

Split-Path

Cmdlet

경로의 지정된 일부를 반환합니다.

Test-Path

Cmdlet

경로의 모든 요소가 있는지 여부를 확인합니다.

Get-Process

Cmdlet

로컬 컴퓨터에서 실행 중인 프로세스를 가...

Stop-Process

Cmdlet

실행 중인 하나 이상의 프로세스를 중지합니다.

Remove-ItemProperty

Cmdlet

항목에서 속성 및 해당 값을 삭제합니다.

Rename-ItemProperty

Cmdlet

항목의 속성 이름을 바꿉니다.

Resolve-Path

Cmdlet

경로에서 와일드카드 문자를 확인하고 경로...

Get-Service

Cmdlet

로컬 컴퓨터의 서비스를 가져옵니다.

Stop-Service

Cmdlet

실행 중인 하나 이상의 서비스를 중지합니다.

Start-Service

Cmdlet

하나 이상의 중지된 서비스를 시작합니다.

Suspend-Service

Cmdlet

실행 중인 하나 이상의 서비스를 일시 중...

Resume-Service

Cmdlet

하나 이상의 일시 중단(일시 중지)된 서...

Restart-Service

Cmdlet

하나 이상의 서비스를 중지한 다음 다시 ...

Set-Service

Cmdlet

서비스의 표시 이름, 설명 또는 시작 모...

New-Service

Cmdlet

레지스트리와 서비스 데이터베이스에 새 W...

Set-Content

Cmdlet

항목의 내용을 쓰거나 새 내용으로 바꿉니다.

Set-ItemProperty

Cmdlet

지정된 위치의 속성 값을 설정합니다.

Get-Acl

Cmdlet

파일 또는 레지스트리 키와 같은 리소스에...

Set-Acl

Cmdlet

파일 또는 레지스트리 키와 같은 지정된 ...

Get-PfxCertificate

Cmdlet

컴퓨터의 .pfx 인증서 파일 정보를 가...

Get-Credential

Cmdlet

사용자 이름 및 암호를 기반으로 자격 증...

Get-ExecutionPolicy

Cmdlet

셸에 대한 현재 실행 정책을 가져옵니다.

Set-ExecutionPolicy

Cmdlet

셸의 실행 정책에 대한 사용자 기본 설정...

Get-AuthenticodeSignature

Cmdlet

파일에서 Authenticode 서명 정...

Set-AuthenticodeSignature

Cmdlet

Authenticode 서명을 사용하여 ...

ConvertFrom-SecureString

Cmdlet

보안 문자열을 암호화된 기본 문자열로 변...

ConvertTo-SecureString

Cmdlet

암호화된 기본 문자열을 보안 문자열로 변...

Format-List

Cmdlet

출력의 형식을 각 속성이 새 줄에 표시되...

Format-Custom

Cmdlet

사용자 지정된 보기를 사용하여 출력 형식...

Format-Table

Cmdlet

출력 형식을 표로 지정합니다.

Format-Wide

Cmdlet

개체의 형식을 각 개체 속성을 하나만 표...

Out-Null

Cmdlet

출력을 콘솔로 보내는 대신 삭제합니다.

Out-Default

Cmdlet

출력을 기본 포맷터와 기본 출력 cmdl...

Out-Host

Cmdlet

출력을 명령줄로 보냅니다.

Out-File

Cmdlet

출력을 파일로 보냅니다.

Out-Printer

Cmdlet

출력을 프린터로 보냅니다.

Out-String

Cmdlet

개체를 연속 문자열로 호스트에 보냅니다.

Add-Member

Cmdlet

사용자가 정의한 사용자 지정 멤버를 Wi...

Compare-Object

Cmdlet

두 개체 집합을 비교합니다.

ConvertTo-Html

Cmdlet

개체 또는 개체 집합을 나타내는 HTML...

Export-Csv

Cmdlet

입력 개체를 나타내는 쉼표로 구분된 값(...

Import-Csv

Cmdlet

Export-CSV cmdlet이 만든 ...

Export-Alias

Cmdlet

현재 정의된 별칭에 대한 정보를 파일로 ...

Invoke-Expression

Cmdlet

문자열 형식으로 제공된 Windows P...

Get-Alias

Cmdlet

현재 세션의 별칭을 가져옵니다.

Get-Culture

Cmdlet

컴퓨터의 국가별 설정 정보를 가져옵니다.

Get-Date

Cmdlet

현재 날짜 및 시간을 가져옵니다.

Get-Host

Cmdlet

현재 콘솔 호스트 개체에 대한 참조를 가...

Get-Member

Cmdlet

개체 또는 개체의 컬렉션에 대한 정보를 ...

Get-UICulture

Cmdlet

Windows PowerShell의 현재...

Get-Unique

Cmdlet

정렬된 목록에서 고유한 항목을 반환합니다.

Import-Alias

Cmdlet

파일에서 별칭 목록을 가져옵니다.

Select-String

Cmdlet

문자열에서 패턴을 확인합니다.

Measure-Object

Cmdlet

개체의 특징 및 속성을 측정합니다.

New-Alias

Cmdlet

새 별칭을 만듭니다.

New-TimeSpan

Cmdlet

TimeSpan 개체를 만듭니다.

Read-Host

Cmdlet

콘솔에서 입력 줄을 읽습니다.

Set-Alias

Cmdlet

Cmdlet 또는 현재 Windows P...

Set-Date

Cmdlet

컴퓨터의 시스템 시간을 지정한 시간으로 ...

Start-Sleep

Cmdlet

지정된 기간 동안 shell, scrip...

Tee-Object

Cmdlet

개체 입력을 파일이나 변수로 파이프한 다...

Measure-Command

Cmdlet

스크립트 블록 및 cmdlet을 실행하는...

Update-TypeData

Cmdlet

*.types.ps1xml 파일을 메모리...

Update-FormatData

Cmdlet

형식 데이터 파일을 업데이트하고 추가합니다.

Write-Host

Cmdlet

호스트 사용자 인터페이스를 사용하여 개체 표시

Write-Progress

Cmdlet

Windows PowerShell 명령 ...

New-Object

Cmdlet

.Net 또는 COM 개체의 인스턴스를 ...

Select-Object

Cmdlet

개체의 지정된 속성이나 개체의 설정을 선...

Group-Object

Cmdlet

지정한 속성에 대해 같은 값이 있는 개체...

Sort-Object

Cmdlet

속성 값에 따라 개체를 정렬합니다.

Get-Variable

Cmdlet

현재 콘솔에 있는 변수를 가져옵니다.

New-Variable

Cmdlet

새 변수를 만듭니다.

Set-Variable

Cmdlet

변수 값을 설정합니다. 요청한 이름이 있...

Remove-Variable

Cmdlet

변수와 그 값을 삭제합니다.

Clear-Variable

Cmdlet

변수 값을 삭제합니다.

Export-Clixml

Cmdlet

개체의 XML 기반 표시를 만들고 이 표...

Import-Clixml

Cmdlet

CLIXML 파일을 가져오고 Window...

Write-Debug

Cmdlet

호스트 표시에 디버그 메시지를 기록합니다.

Write-Verbose

Cmdlet

호스트의 상세 정보 표시에 문자열을 기록...

Write-Warning

Cmdlet

경고 메시지를 작성합니다.

Write-Error

Cmdlet

오류 파이프라인에 개체를 기록합니다.

Write-Output

Cmdlet

성공 파이프라인에 개체를 기록합니다.

Get-TraceSource

Cmdlet

추적을 위해 계측된 Windows Pow...

Set-TraceSource

Cmdlet

Windows PowerShell 구성 ...

Trace-Command

Cmdlet

Trace-Command cmdlet은 ...

Alias

Provider

Windows PowerShell 별칭 ...

Environment

Provider

Windows 환경 변수에 대한 액세스를...

FileSystem

Provider

Windows PowerShell의 파일...

Function

Provider

Windows PowerShell에 정의...

Registry

Provider

Windows PowerShell의 시스...

Variable

Provider

Windows PowerShell 변수 ...

Certificate

Provider

Windows PowerShell 내의 ...

about_alias

HelpFile

Windows PowerShell에서 c...

about_arithmetic_operators

HelpFile

Windows PowerShell에서 산...

about_array

HelpFile

데이터 요소를 저장하기 위한 간단한 데이...

about_assignment_operators

HelpFile

Windows PowerShell에서 변...

about_associative_array

HelpFile

쌍을 이루는 키와 값 집합을 저장하기 위...

about_automatic_variables

HelpFile

Windows PowerShell에 의해...

about_break

HelpFile

foreach, for, while, d...

about_command_search

HelpFile

Windows PowerShell에서 명...

about_command_syntax

HelpFile

Windows PowerShell의 명령 형식

about_commonparameters

HelpFile

모든 cmdlet이 지원하는 매개 변수

about_comparison_operators

HelpFile

Windows PowerShell에서 값...

about_continue

HelpFile

프로그램 루프의 맨 위로 즉시 돌아가기

about_core_commands

HelpFile

데이터 저장소와 관련된 Windows P...

about_display.xml

HelpFile

개체의 표시 방법 제어

about_environment_variable

HelpFile

Windows PowerShell에서 W...

about_escape_character

HelpFile

Windows PowerShell이 문자...

about_execution_environ...

HelpFile

명령이 실행되는 방법에 영향을 주는 요인

about_filter

HelpFile

Windows PowerShell에서 W...

about_flow_control

HelpFile

Windows PowerShell에서 흐...

about_for

HelpFile

간단한 설명

about_foreach

HelpFile

항목 컬렉션에 있는 모든 항목을 트래버스...

about_function

HelpFile

Windows PowerShell에서 함...

about_globbing

HelpFile

와일드 카드 참조

about_history

HelpFile

Windows PowerShell 명령 ...

about_if

HelpFile

하나 이상의 조건 테스트 결과를 기반으로...

about_line_editing

HelpFile

Windows PowerShell 명령 ...

about_location

HelpFile

Windows PowerShell에서 작...

about_logical_operator

HelpFile

Windows PowerShell에서 여...

about_method

HelpFile

Windows PowerShell에서 메...

about_namespace

HelpFile

Windows PowerShell에서 유...

about_object

HelpFile

Windows PowerShell에서 개...

about_operator

HelpFile

Windows PowerShell에서 지...

about_parameter

HelpFile

Windows PowerShell에서 C...

about_parsing

HelpFile

Windows PowerShell에서 명...

about_path_syntax

HelpFile

Windows PowerShell에서 사...

about_pipeline

HelpFile

Windows PowerShell에서 명...

about_property

HelpFile

Windows PowerShell 개체 ...

about_provider

HelpFile

Windows PowerShell 공급자...

about_pssnapins

HelpFile

Windows PowerShell 스냅인...

about_quoting_rules

HelpFile

문자열 경계를 설정하는 규칙

about_redirection

HelpFile

Windows PowerShell의 출력...

about_ref

HelpFile

참조 변수 유형을 만드는 방법

about_regular_expression

HelpFile

Windows PowerShell에서 C...

about_reserved_words

HelpFile

특별한 의미를 갖고 있기 때문에 식별자로...

about_scope

HelpFile

Windows PowerShell 환경에...

about_script_block

HelpFile

Windows PowerShell에서 문...

about_shell_variable

HelpFile

Windows PowerShell에서 만...

about_signing

HelpFile

Windows PowerShell 실행 ...

about_special_characters

HelpFile

Windows PowerShell이 명령...

about_switch

HelpFile

스위치를 사용하여 여러 if 문 처리

about_system_state

HelpFile

셸이 실행 중일 때 Windows Pow...

about_types

HelpFile

Windows PowerShell에서 ....

about_where

HelpFile

개체 속성에 따라 개체 필터링

about_while

HelpFile

조건 테스트 결과를 기반으로 명령 블록을...

about_wildcard

HelpFile

Windows PowerShell에서 c...

default

HelpFile

PowerShell cmdlet 및 개념...

 


,
운영중인 IIS 서버에서 장애가 났다....ㅠㅠㅠㅠㅠㅠㅠㅠ OMG

처리를 담당하는 IIS 서비스가 정상적으로 실행되지 않고
백신 서비스만 90-100%의 메모리 점유가 되는 바람에 IIS가 메모리 점유가 안되고 정상 동작이 안되었다..

그덕에 IIS 서버에 어마어마한 양의 큐가 ..........


백신의 평균 메모리 점유율은 150MB 정도...
무슨 백신인지는 비밀로........

[ 정상인 상태의 IIS ]




일단 장애는 장애이고 당시 백신을 정지 후에 해결이 되었으니 후조치 대응을 해야한다
재발생이 되더라도 즉각으로 대응할 수 있도록
 
조치방법으로는
     1. 백신에서 IIS 실행파일자체를 예외처리
          ( 기본적으로 백신에서는 IIS 는 예외처리되어있지만.. IIS 프로세스명과 해당폴더를 예외처리적용했다 )
     2. 스크립트를 이용해 memory monitoring




powershell을 이용하여 memory moniring 스크립트를 작성하였다.

process를 가져와서 mb 단위로 변경하여 백신의 메모리가 500MB 이상이 될 경우 SMS로 alert
IIS 도 함께 메모리가 정상인지 확인하기 위해 함께 알림


그리고 각 서버에 task scheduler 에 등록하기

> 실행주기 설정



> 뭘할지 Action 설정 
powershell로 action을 등록하면 powershell 경로를 또 지정해줘야하기 때문에 bat 파일 간단히 작성해서 bat파일로 등록했다

windows server 초기엔 powershell 실행 권한?이 없기 때문에 실행할수 있도록 모드를 변경해줘야한다


[bat 파일]
powershell set-executionpolicy unrestricted
powershell C:\***_mon.ps1
powershell set-executionpolicy remotesigned





[ memory monitoring script ]
$ComputerName=$ENV:ComputerName
# 백신 프로세스 메모리 확인
$vaccine=Get-Process-ProcessNameekrn|SelectName,@{n="PrivateMemory";e={$_.PrivateMemorySize/1mb}}
# IIS ( w3wp ) - 프로세스 메모리 확인
$IIS = Get-Process -ProcessName w3wp | Select Name,@{n="PrivateMemory";e={$_.PrivateMemorySize/1mb}}

$vaccine _name = $vaccine .Name
$vaccine _memory = $vaccine .PrivateMemory
$vaccine _memory = "{0:N1}" -f $vaccine _memory
$IIS_name = $IIS.Name
$IIS_memory = $IIS.PrivateMemory
$IIS_memory = "{0:N1}" -f $IIS_memory

# $vaccine_process 가 500 이상 (-gt) 일 경우 sms을 보내주는 url을 호출해줭 
if($vaccine_process-gt 500){
    $url = ‘SMS으로 alert을 호출하는 API URL'
    Invoke-WebRequest -Uri $url
}





[ 수신한 SMS ]



끝~

2주동안 아직은 안오고 있긴한데.........





,

wanacry 랜섬웨어와 동일하게 SMB (Server Message Block)를 통해 확산된다.
이전과 동일하게 SMB 취약점인 MS17-010 취약점을 통해 확산되고 있으므로, 해당 업데이트를 진행 하면 당분간 안심해도되지만
변종이 많은 랜섬웨어의 경우 또다른 추가적인 랜섬웨어가 확산 될 수 있으므로, 
항상 철저한 사용자의 주의가 필요하다.


  1. 증상
          - 디스크의 MBR과 MFT를 손상시켜 부팅이 불가능하도록 함
          - 파일 단위의 암호화는 없으며, 손상된 MBR과 MFT의 복사본을 저장하지 않기 때문에 몸값을 지불해도 복구 불가

  1. Wanacry 랜섬웨어와 차이점
          - 파일을 암호화 하지 않음
          - 부팅에 관여하는 MFT(Master File Table),  MBR ( Master Boot Record )를 감염시켜 재부팅과정에서 디스크를 암호화 시킨다.
          - 감염 시 부팅조차 어렵다.
          - 재부팅을 하지 않을 경우 감염은 되지 않는다.

  1. 예방법
          - PC 부팅 전 네트워크 차단을 위해 랜선 분리
          - 파일 공유 해제
          - 최신보안 업데이트 수행 ( windows update ) 



prevention 1 : Windows Update ]



prevention 2 : Disable SMB ]


랜선분리하세요!!!
prevention 1 : Disconnect LAN cable ]




사실 아직 관리자의 입장에서의 경우, 사용자들에게는 각별한 주의 당부를 요구할 수 밖에 없으며,
기술적으로는
  1. WSUS 주기적으로 실행하고
  2. SMB 공유폴더 스캔하여 권한 및 불필요한 폴더 확인하고
  3. 스팸메일 필터를 강화하고
  4. 백신 업데이트 주기를 확인하여 체크하는
위와 같은 방법 밖엔 조치를 할 수 없다.

새로운 랜섬웨어 확인시 즉각적으로 사용자들에게 공지하여 알리고 있으며,
WSUS를 통해 반강제? 적으로 업데이트를 진행하고 있다.

백신 또한 업데이트가 누락되는 사용자들이 없도록 일일운영으로 진행하고 있다.


[ PETYA RANSOMEWARE ]





한창 대학교때는 DDOS, SQL injection등 해킹기법이 최고의 보안인줄 알았지만...
관리자가 되고나서는 사용자, 내부인원들의 보안인식이 중요성이 더 커지고 있는것을 매번 느낀다
매년 이슈가 되고 있는 이러한 보안이슈도 그렇고...


언제나 어떤일에서나 그렇듯
기술적인 문제에 대해서는 어떻게든 풀어나가고, 정답?이라는 해결책이 있지만
사람에 대한 문제에 대해서는 정답이라는것이 없는것같다. 

항상 최선을 다할 뿐......
평생을 고민해야할 숙제인듯 ㅠㅠ 넘나 어려운것


어쩌면 간혹 이러한 이슈가 나오는게 사용자의 보안인식을 증대하는데 영향이 있는것 같기도 하고 그렇다 하하
확실히 초기보다는 보안인식이 올라간것으로 체감되니.... ^^:;






공감 버튼누르기 어렵지 않아요~~~!!! ^.^


♡♥ 공감 ♥♡ 버튼 눌러주세요 





,
아래 리스트들은 바이러스 맬웨어 방지 솔루션의 제품인증 기본 표준 순위를 나타내 주는 기관?이다

관리자에게는 바이러스의 기본기능인 탐지 / 빠른 DB업데이트 에 추가로 
낮은오탐율 / 운영시 가벼움 / 추가기능 / 가격 / 인지도 등이  여러가지의 백신 선택 기준이 된다

물론 서버 백신인지 클라이언트 백신인지에 따라서도 여러 기준의 비율이 달라질 수 있는데 

백신의 경우 일일이 설치해서 확인해보기가 쉽지 않기 때문에
공신력있는 여러 기관?의 테스트와 평판이 그 백신을 결정하는데에 참고에 많은 도움이 된다.

실제로 백신을 한번 잘못선택할 경우 두고두고 후회하는... 불상사가 되지 않길 바라며

총 4개의 백신 test 순위를 갖는 기관?을 모아 보았다.

개인적으로 직접 사용후기를 보는것도..........
클라이언트 백신으로 Kaspersky를 썼다가 엄청난 고생을 했다................ 하.... ;;; 
물론 좋은점도 있지만.....(끔찍) 


  1. AV-comparatives
    http://www.av-comparatives.org/

          연간 Awards를 한눈에 볼수있는 페이지 
          
          AWARDS > Statics 를 통해 확인이 가능하다.

          



          아래와 같이 카테고리를 선택해서 연도별로 확인이 가능하다.

          


          



  1. VB100 ( Virus Bulletin, 바이러스 블러틴 ) 

          
          2개월에 한번씩 발표하는 테스트 결과이다.
          RAP ( Reactive And Proactive ) 테스트 결과로, 위-오른쪽일 수록 높은 점수가 된다. ( 구버전의 그래프일때 )

          Reactive - 새롭게 등장하는 바이러스 샘플을 찾는 능력
          Proactive - 데이터베이스에 정식 등록되지 않은 샘플을 찾아내는 능력

          예전에는 그래프로 나왔으나 요즘에는 표로 변경된 듯 하다..  ( 그래프가 더 보기쉬웠는데....... )
          

          


  1. TOPTEN Reviews 

          백신 프로그램의 성능/가격/인지도등을 한눈에 확인 가능하다.
          




  1. AV Test  
          
          용도 / OS / 날짜에 따라서 순위를 확인 할 수 있다.
          



무엇이 좋은 백신인지는 운영 환경에 따라 너무도 다르기때문에
딱히 추천한다고 할 수 없지만 비추는 가려낼 수 있을 것 같다..................;;

 


,

 

 

Server Security Guide


 

 

Idle time 설정 - 설정되있음

 

로그인 실패 횟수 제한 ( 계정 잠금 카운터 ) - 설정안되어있음

계정 잠금기간 (5) / 계정잠금 임계값 5/ 계정잠금 카운터 재설정 5

 

공유폴더 확인 ( ex. 프린터 공유 - 예시. \\ IP address \print$

 

1. Windows Server

1.1 Windows Update

Control Panel\All Control Panel\Windows Update

Check for updates > Install

* 비즈니스에 방해가 되는 경우를 제외한 최신 보안 패치는 즉시 설치되어야 함

 

 

 

 

1.2 Shared Folder

1.2.1 시스템 기본 공유폴더 제거

* IPS$는 서비스에 영향을 미칠 수 있으므로 삭제 전 검토가 필요함

방법 1. 컴퓨터 관리 설정 변경

Computer Management\System Tolls\Shared Folders\Shares

C$ / D$ / ADMIN$ Stop Sharing

* 서버 또는 서비스 재시작 시 재설정 필요함

 

방법2. Command 실행

cmd.exe

> net share

> netshare 공유 이름 /delete

* 서버 또는 서비스 재시작 시 재설정 필요함

>위 설정후에는 재부팅후에 설정이 원복됨 ( 레지스트리를 수정해줘야 원복되지 않음 )

 

 

방법3. 레지스트리 수정

*방법 1, 2은 서버 또는 서비스 재시작시 공유폴더가 활성화되어 재시작이 필요하나

레지스트리를 수정하면 시스템 재부팅 후 디폴트 폴더가 자동 공유되는 것 방지 가능함.

그러나 레지스트리 수정 방법은 IPC$를 포함한 모든 기본 공유 폴더 비활성화하므로

주의가 필요함

regedit.exe >

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameter

Value name : AutoShareServer

DataType : REG_DWORD

Value : 0 (Zero)

 

1.2.2 공유폴더 Everyone 권한 제한

Computer Management\System Tolls\Shared Folders\Shares

공유된 폴더의 Everyone 권한 Read Only 또는 Deny All

 

 

 

1.3 Remote Desktop

1.3.1 Drive redirection 비활성화

* 터미널 서버에서 로컬 드라이브 액세스 제한

방법 1. 레지스트리 수정

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Serivice

Value name : fDisableCdm

DataType : REG_DWORD

Value : 1

 

 

방법 2. 컴퓨터 구성 수정

gpedit.msc >

Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow drive redirection

Enabled: All drives

 

1.3.2 원격 접속 권한 제한 설정

방법 1. 컴퓨터 관리 수정

Computer Management\Local Users and Groups\Users

일반 User계정: Deny the user permissions to log on to Remote Desktop Session Host server

 

방법 2. 컴퓨터 구성 수정

gpedit.msc >

Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Allow log on through Remote Desktop Services

Administrators / (Remote Desktop Users)

 

 

 

 

 

1.3.3 Idle time 설정

방법 1. 레지스트리 수정

regedit.exe >

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

Value name : MaxIdleTime

DataType : REG_DWORD

Value : 900000 (Dec)

 

 

방법 2. 컴퓨터 구성 수정

gpedit.msc

Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits\Set time limit for active but idle Remote Desktop Services sessions

15 minutes

 

1.3.4 Plug & Play redirection리다이렉션 제한

* Plug & Play : 장치 자동 인식 기능

방법 1. 레지스트리 수정

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

Value Name: fDisablePNPRedir
Type: REG_DWORD
Value: 1

 

방법 2. 컴퓨터 구성 수정

gpedit.msc >

Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow supported Plug and Play device redirection

Enabled

 

 

1.4 Drive

1.4.1 Autorun 비활성화

          * Autorun : autorun.inf라는 파일을 자동으로 읽어, 특정 프로그램을 자동으로 실행하는 기능

방법 1. 레지스트리 수정

regedit.exe >
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer

Value name : NoAutorun

DataType : REG_DWORD

Value : 1

              

           

방법 2. 컴퓨터 구성 수정

Computer Configuration\Administrative Templates\Windows Components\AutoPlay Policies\Set the default behavior for AutoRun

Enabled: Do not execute any autorun commands

 

 

1.4.2 Autoplay 비활성화

* Autoplay : 드라이브의 미디어를 읽어들여 자동으로 재생하는 기능

방법 1. 레지스트리 수정

regedit.exe >
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer

Value name : NoDriveTypeAutoRun

DataType : REG_DWORD

Value : FF

               

 

방법 2. 컴퓨터 구성 수정

gpedit.msc >

Computer Configuration\Administrative Templates\Windows Components\AutoPlay Policies\Turn off Autoplay

Enabled: All drives

1.5. Etc.

1.5.1 네트워크로부터의 접근 권한 제어

* 네트워크의 다른 사용자가 SMB / NetBIOS / CIFS / COM+ 등의 프로토콜에 접근할 수 있는 권한

설정

Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Access this computer from the network

Administrators / Authenticated Users / (ENTERPRISE DOMAIN CONTROLLERS)

1.5.2 불필요한 서비스 비활성화

* 서버의 기능에 따라 서비스 사용 여부 확실히 판단 후 disable

Control Panel\All Control Panel Items\Administrative Tools\Services

불필요한 Service 속성 > Startup type: disable

 

* 참고 : 오픈 포트 확인

CMD

Netstat -nao

 

* 대표적인 불필요한 서비스 ( 아래 서비스 사용 여부 확인 후 disable / 굵은 글씨 : 특히 주의 )

- File and printer sharing services (NetBIOS / NFS / FTP)

 - Wireless networking services

 - Remote control and remote access programs, particularly those that do not strongly encrypt their -communications (Telnet)

 - Directory services (LDAP, NIS)

- Web servers and services

- Email services (SMTP)

- Language compilers and libraries

 - System development tools

 - System and network management tools and utilities (SNMP)

 

 

 

 

 

 

 

 

 

2. 참고 문서

     - CIS Microsoft Windows Server 2012 R2 Benchmark (v2.2.1)

     - NIST Guide to General Server Security (Special Publication 800-123)

     - SANS Server Security Policy (2016)

,

가상 사설망(Virtual Private Network, VPN)

 인터넷을 이용하여 고비용의 사설망을 대체하는 효과를 얻기 위한 기술로 인터넷망과 같은 공중망을 사용하여 둘 이상의 네트워크를 안전하게 연결하기 위하여 가상의 터널을 만들고 암호화된 데이터를 전송할 수 있도록 구성된 네트워크

공중 네트워크를 통해 한 회사나 몇몇 단체가 내용을 바깥 사람에게 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망이다. 


VPN은 알 수 없는 공중망을 거치는 연결을 통하지만 그안에서 소프트웨어적으로 가상의 회선을 직접 연결한 것과 같은 효과를 내는 것을 말한다.



사설망 ( Private Network )

특정한 회사나 조직이 소유하고 독점적으로 사용하는 네트워크를 의미


공중망 ( Public Network ) 

불특정 다수의 사용자에게 서비스를 제공하는 통신망으로 우리가 흔히 쓰고 있는 인터넷이 대표적인 공중망


VPN 터널링 프로토콜

VPN 연결 지점간에 오가는 데이터 패킷의 암호화, VPN 터널의 생성 및 관리, 그리고 암호화 키 관리를 수행

터널링 프로토콜은 데이터가 전송 네트워크를 통과할 수 있도록 하는 라우팅 정보를 포함한 헤더와 개인데이터를 캡슐화한다. 캡슐화된 프레임은 헤더에 추가되어 있는 라우팅 정보를 기반으로 인터넷과 같은 공중망을 경유하여 터널의 엔드포인트로 전송되고 목적지에 도달하면 디캡슐화 되어 최종 목적지로 향하게 된다.


VPN 터널링 프로토콜로는 PPTP(Point-to-Point Tunneling Protocol), L2TP(Layer 2 Tunneling Protocol), IPsec(IP Security) 등


Layer2
L2F(layer 2 Forwarding)
PPTP(Point-to-Point Tunneling Protocol)
L2TP(Layer 2 Tunneling Protocol)

Layer 3
IPSEC(Internet Protocol Security)
ATMP(Ascend Tunnel Management Protocol)
VTP(Virtual Tunneling Protocol)



  ㅇ 통신 계층에 따른 구분
     - Layer 2 (데이터링크 계층) 기반의 VPN 
        . CPE-VPN  :  PPTPL2TP 등
        . PP-VPN   :  MPLS 기반 (MPLS-VPN) 등

     - Layer 3 (네트워크계층) 기반의 VPN 
        . CPE-VPN  :  IPSec 등
        . PP-VPN   :  가상 라우터 기반 방식 등

     - Layer 5 (세션계층) 기반의 VPN 
        . CPE-VPN  :  SOCKv5 등

  ㅇ 터널링 프로토콜에 따른 구분
     - Layer 2 터널링 방식 (데이터링크 계층) :  PPTPL2TPMPLS 등
     - Layer 3 터널링 방식 (IP 계층)         :  IPSecGRE 등
     - Layer 4 터널링 방식 (전송 계층)       :  SSL/TLSSSHSOCKS v5 등



PPTP(Point-to-Point Tunneling Protocol)

PPTP는 PPP(Point-to-Point) 접속을 확장하여 원격 사용자와 사설망 사이의 보안 접속을 제공하는 Layer 2 터널링 프로토콜로 마이크로소프트, 3Com 등이 공동으로 제안

서버에 접속한 후 인증을 받으면 VPN 터널이 생성되고 이를 통해 VPN 연결이 가능해진다. 주로 외부에서 사내의 서버에 접속하기 위해 널리 이용되며 Microsoft Windows, 안드로이드 등 다양한 OS에서 기본적으로 제공


[ PPTP 프로토콜의 캡슐화 및 암호화 과정 ]

 PPTP 프로토콜의 캡슐화 및 암호화 과정을 나태낸다. 그림에서와 같이 터널링된 데이터에 대해서 PPTP 프로토콜은 수정된 버전의 GRE(Generic Routing Encapsulation)를 사용하여 PPP 프레임을 캡슐화하고 캡슐화된 PPP 프레임의 페이로드에 대해 암호화나 압축을 수행하게 된다. 이 때 PPP 프레임은 MS-CHAP v2 또는 EAP-TLS 인증 프로세스에서 생성된 암호화 키를 사용하여 MPPE(Microsoft Point-to-Point Encryption, Microsoft 지점 간 암호화)로 암호화할 수 있다. 사용자 인증은 PPP 인증을 이용한다.



L2TP (Layer 2 Tunneling Protcol)

L2TP는 Microsoft가 제안한 PPTP와 Cisco가 제안한 L2F(Layer 2 Forwarding) 프로토콜을 결합한 것으로 PPTP의 장점과 L2F의 장점을 하나로 모으자는 의도로 개발된 프로토콜이다. PPTP와는 달리 L2TP는 IP 네트워크(UTP/IP) 뿐만 아니라 IP 전송계층이 없는 WAN 구간에서도 사용이 가능하며 X25, 프레임 릴레이, ATM(Asynchronous Transfer Moder) 등 다양한 네트워크를 지원한다는 장점이 있다. PPTP에 비해서 L2TP는 다음과 같은 차이점을 갖는다.

PPTP는 IP기반의 네트워크만 지원하는 반면 L2TP는 패킷 중심의 지점간 연결이기만 하면 통신이 가능
PPTP는 두 지점 사이에 하나의 터널만 가능하지만 L2TP는 두 지점 사이에 여러개의 터널을 사용할 수 있으며 터널에 따른 QoS를 적용가능
PPTP와 달리 PPP 데이터 그램을 암호화하지 않으므로 암호화에는 IPsec(IP Security)를 사용하는데 이러한 L2TP와 IPsec의 조합을 L2TP/IPsec이라고 한다


IP 헤더
L2TP
L2TP 페이로드





L2TP/IPsec의 캡슐화는 L2TP 캡슐화와 IPsec 캡슐화의 두 단계로 구성









VPN의 핵심 구성요소
Security
authentication(인증)
Integrity(무결성)
encryption(암호화)

방법
DES (Data Encryption Standard) : CPU intensive
3DES
RC5
MPPE




















'Security > Network' 카테고리의 다른 글

[ Network ] MAC Flapping 현상  (0) 2016.10.25
,


Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by a

 policy defined at a more specific scope.  Due to the override, your shell will retain its current effective execution

policy of Unrestricted. Type "Get-ExecutionPolicy -List" to view your execution policy settings. For more information p

lease see "Get-Help Set-ExecutionPolicy".

At line:1 char:1

+ Set-ExecutionPolicy “RemoteSigned” -Scope CurrentUser -Confirm:$false

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException

    + FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand


그냥 콘솔에서 실행할 때는 에러가 나지 않았지만

오른쪽클릭 후 powershell 실행 후에는 위와 같은 에러가 났다.

> Get-ExecutionPolicy -List

아무래도 MachinePolicy 가 허용안됨으로 되있어서 그런듯 하여

( 다른항목은 userpolicy / currentuser 등 모두 undefined로 변경해도 동일한 증상이었기 때문에 )

해당 값을 변경하려 했으나 다시 오류

그룹정책을 먼저 변경해 줘야 한다고 한다.....

그래서 그룹정책을 변경하기 위해

command 창을 켜고 ( win + r )

gpedit.msc

컴퓨터 구성> 관리 템플릿> Windows 구성 요소> Windows PowerShell

 Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell

위 경로로 이동한다

그리고 Not Configured 에서 Enabled 로 변경해주고 Apply 한다.

그리고 레지스트르 값을 변경하기 위해

Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy -Value Bypass

명령어 실행 후 다시 확인해보면 값이 변경되있다.

그리고 다시 파워쉘 스크립트를 실행해 보면 정상실행~!




,


탐지 일자 : 2017.01.13 금요일

탐지 내용 : Win32/Filecoder.Cerber 트로잔

탐지 경로 : 서버에서 Filezilla client 를 다운로드

> 이 경로를 찾느라 하루종일 해맷다....후........


C:\Users\Administrator\AppData\Local\Temp\2



운영 메모리 >> C:\Users\Administrator\AppData\Local\Temp\2\V17U7.exe Win32/Kryptik.FMWT 트로잔의 변형 치료할 수 없음



랜섬웨어 탐지 경로


1. 백신에서 탐지하여 알게됨


 일자 : 2017-01-13 금요일 14:13:00

 경로 : 운영 메모리 >> C:\Users\Administrator\AppData\Local\Temp\2\V17U7.exe

 탐지 명 : Win32/Kryptik.FMWT 트로잔의 변형

 결과 : 치료할 수 없음


  > V17U7.exe 파일이 아마도 암호화를 시켜주는 실행 파일 인 것 같다.



 추가 탐지


 일자 : 2017-01-16 월요일 14:39:58

 경로 : D:\GMKT_Web_Root\GMKT.INC.InnerService.PC.Service\bin\_HELP_DECRYPT_I23Q_.hta

 탐지 명 : Win32/Filecoder.Cerber 트로잔

 결과 : 치료할 수 없음


  > _HELP_DECRYPT_I23Q_.hta  전형적인 cerber 랜섬웨어의 파일 

      보통 _HELP_DECRYPT_[random]_.hta  또는 _HELP_DECRYPT_[random]_.jpg 파일명으로 나타난다.



2. 경로 추적


랜섬웨어 감염의 경우 보통 공유폴더의 everyone 권한으로 인한 확산이 주요원인이다.

해당서버의 배포시기와 비슷하여 서버와 연관된 서버들을 모두 확인하였다.


역시나 everyone 권한이 있었으나, 연관된 서버들에게서 랜섬웨어는 발견되지 않았다.

공유폴더에 의한 것은 아닌것으로 결론




3. 감염된 서버에서 백신 full 스캔


스캔을 진행해보니 탐지된 경로 뿐만 아니라 굉장히 많은 수의 _HELP_DECRYPT_I23Q_.hta 파일이 확인되었다.

백신에서 실시간감시로 잡지 못하였다니....

경로로 들어가보니 주로 bin폴더안의 파일들이 .9092 확장자로 모두 변조되어 있었고 

아래와 같은 jpg 파일이 하나씩 상단에 위치해 있었다.


랜섬웨어는 이미 변조된 파일을 복구할 수 없다.........

일단 변조된 파일은 모두 지웠다.







4. 탐지된 파일 확인


해당 경로를 찾아들어가 보았다. 

V17U7.exe 파일은 찾을수 없었고 2 폴더 또한 없었으나

AU_exe 파일이라는 의심스러운 파일 확인  탐지된 시간이랑도 비슷하다.




5. 이벤트 로그 확인


탐지된 시간 경쯤 뭔가의 에러로그가 많았다.

사용자를 보니 서버팀이었다.


6. 프로세스 및 리스닝포트 확인

사용되고 있는 프로세스나 서비스 확인하였지만 - 이상없음
리스닝포트 확인하였지만 - 이상없음

암호화 이후에 모두 종료된건가


7. 제어판 설치된 프로그램 확인


수상하다고 생각되는 파일이었는데 파일질라와 설치시간이 동일했다.

서버팀에 물어보니  인터넷 공식사이트를 통해 다운받았다고는 하나 (파일질라 클라이언트) 파일질라는 프리웨어이다

Au_.exe 파일도 확인해보니 바이러스도 의심되고

아무래도 13일에 금요일에 뭔가 악의적으로 파일질라 서버가 해킹되어 도용되었거나 하지 않았을까... 






8. 재현하기


vm에 동일한 윈도우서버를 올려놓고 파일질라를 직접다운로드 하여 재현해보았지만

실패............ 그냥 파일질라다 일시적으로 그곳으로 배포된건지 뭔지 재현하고싶었는데 재현이 되지 않았다.





결국 모든셋팅 다시하여 새로운 서버로 교체후에 기존서버는 회수되었다.

파일질라.........................








'Security > Issue' 카테고리의 다른 글

[ 보안이슈 2017.06.28 ] Petya 랜섬웨어 발생  (0) 2017.07.03
,