안녕하세요? 허니입니다. 로이터에서 자율주행 자동차에 관한 기사가 올라와 공유합니다. 요즘은 자율 주행 자동차가 매우 핫한 기술인데 저도 요즘 관심있게 보는 종목이기도 합니다. 여러분들은 어떠신가요?


GM invests in self-driving startup Nauto

지엠, 자율주행 스타트업 나우토에 투자


General Motors is investing in Nauto, a two-year-old Silicon Valley startup developing software for self-driving vehicles. 

제너럴모터스는 2년 된 자율주행차의 소프트웨어를 개발하는 실리콘밸리 스타트업 회사에 투자를 하게 됩니다.


None of the companies disclosed the amount of the investment. 

그 회사 내 누구도 투자 금액을 공개하지 않았습니다.


Michael Harley, managing editor for Kelley Blue Book says, it's a great move for GM. 

켈리 블루 북의 편집장인 마이클 할리는 그것이 지엠에 있어 매우 좋은 조치라고 말했습니다.



"This is an automaker who has expertise in manufacturing vehicles, reaching out to somebody who has expertise with software and autonomous driving technology. This is actually no different than your hair salon reaching out to Vidal Sassoon just to supply shampoo or your restaurant offering Ben & Jerry's desserts, you know. They are reaching out to experts." 

"이 회사는 자동차 제조에 전문성을 가지고 있는 차량 제조사이며, 그 회사는 소프트웨어와 자율 주행 기술에 대한 전문성을 가진 자에게 관심을 보이고 있는 것입니다. 이것은 사실 당신의 미용실이 단지 샴푸를 공급하기 위해 비달 사순에 접근하는 것이나 당신의 음식점이 벤앤제리의 디저트를 제공하는 것과 다르지 않습니다. 그들은 전문가들에게 손을 뻗고 있습니다."


To develop its technology, Nauto uses two cameras, one aimed at the road and the other at the driver. The goal is to gather data on driver distraction and on the environment around vehicles and speed up development of self-driving technology. 

나우토는 그 기술을 개발하기 위해 하나는 도로를 향하고 있고 다른 하나는 운전자를 향하고 있는 두 개의 카메라를 사용합니다. 목표는 운전자의 주의를 방해하는 것과 차량 주변의 환경에 대한 데이터를 모으고 자율운행 기술의 개발을 가속화시키는 것입니다.


GM's investment is part of Nauto's just completed $159 million financing round. It was led by SoftBank and venture capital firm Greylock Partners. Other investors included BMW, Toyota, and insurance giant Allianz

지엠의 투자는 나우토의 이제 막 완료된 1억 5천 9백만 달러의 자금 조달의 일환으로 이루어진 것입니다. 그것은 소프트뱅크와 벤처 캐피털 회사인 그레이록 파트너스에 의해 주도되었습니다. 다른 투자자들에는 BMW, 토요타, 그리고 거대 보험사 알리안츠가 포함되어 있습니다. 


Nauto declined to specify the company's post-funding valuation. But its CEO said it was shy of $1 billion "unicorn" status in Silicon Valley. 

나우토는 자금 조달 이후의 그 회사에 대한 상세한 평가액을 알리기를 거부했습니다. 그러나 그 회사의 최고경영자는 그것이 10억 달러인 실리콘밸리의 "유니콘" 등급에 약간 모자란다고 말했습니다.

안녕하세요? 허니입니다. 검증되지 않은 Redirect/Forward 취약점에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다.


사용자 인증을 필요로 하는 페이지에 접근을 하면, 사이트는 로그인 페이지로 이동시킨 뒤 로그인에 성공하면 다시 이전 페이지로 돌아가기 위해 Redirect페이지 주소를 받게 됩니다. 악의적인 사용자가가 Redirect되는 페이지의 값을 피싱 사이트로 변조하여 사용자에게 전송하게 되면 사용자는 로그인 정보가 노출될 수 있습니다.


- Redirect : 클라이언트에서 다른 페이지 변경이 발생
- Forward : 서버 단 자체에서 페이지 변경이 발생

 

 대응방법
타 사이트로의 자동전환에 사용할 URL과 도메인들의 화이트리스트를 사용합니다. 사이트 전환 시 사용자가 기존 사이트를 벗어나려 한다면 경고 하여야 합니다. 요청하는 페이지의 인자와 쿠키에 허용되지 않은 타 사이트 URL이 있는지 점검합니다. 제공된 값이 유효한지, 입력된 사용자에게 허용된 것인지를 점검해야 합니다. Redirect URL에 대한 검증을 실시하여 인가된 URL에 대해서만 Redirect를 허용합니다. 불필요한 Redirect와 Forward의 사용은 피해야 합니다. 자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트 리스트에 존재하는지 확인해야 합니다. 다음의 예제와 같이, 외부로 연결할 URL과 도메인들은 화이트 리스트를 작성한 후, 그 중에서 선택함으로써 안전하지 않은 사이트로의 접근을 차단할 수 있습니다.

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException
{
// 다른 페이지 이동하는 URL 리스트를 만든다.
String allowURL[] = { "http://url1.com", "http://url2.com", "http://url3.com" };
// 입력받는 URL은 미리 정해진 URL의 order로 받는다.
String nurl = request.getParameter("nurl");
try
{
Integer n = Integer.parseInt(nurl);
if ( n >= 0 && n < 3)
response.sendRedirect(allowURL[n]);
}
catch (NumberFormatException nfe)
{
 // 사용자 입력값이 숫자가 아닐 경우 적절히 에러를 처리한다.

}

}

 

접근할 URL 주소를 외부에서 받은 경우, 허용할 URL과 도메인들의 화이트리스트의 범위 안에서만 작동하도록 함으로써 악의적인 사이트 접근을 근원적으로 차단할 수 있습니다.

 

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.Statement;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import _022_Open_Redirect.before.ShortcutInfo;

public class IndexService extends HttpServlet
{
private final String REGISTER_SUBPAGE_SHORTCUT_COMMAND =
"register_sub_page";
private final String OPEN_SUBPAGE_SHORTCUT_COMMAND = "read_writing";
private final String SHORTCUT_ID_PARAM = "writing_id";
private final String TITLE_PARAM = "title";
private final String URL_PARAM = "url";

private Set<String> allowedUrls;

public IndexService()
{
allowedUrls = new HashSet<String>();
allowedUrls.add("http://www.site.com/subpage1.html");
allowedUrls.add("http://www.site.com/subpage2.html");
allowedUrls.add("http://www.site.com/subpage3.html");

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException
{
String command = request.getParameter("command");
...
// sub page의 shortcut을 등록
if (command.equals(REGISTER_SUBPAGE_SHORTCUT_COMMAND))
{
shortcutInfo.id = request.getParameter(SHORTCUT_ID_PARAM);
shortcutInfo.title = request.getParameter(TITLE_PARAM);
shortcutInfo.url = request.getParameter(URL_PARAM);

registerShortcut(shortcutInfo);
...
}

// shortcut을 click하면 sub page로 이동
if (command.equals(OPEN_SUBPAGE_SHORTCUT_COMMAND))
{
String shortcutId = request.getParameter(SHORTCUT_ID_PARAM);

ShortcutInfo shortcutInfo = readShortcut(shortcutId);

if(allowedUrls.contains(shortcutInfo.url) == false)
{
// Error 처리
return;
}
response.sendResponse(shortcutInfo.url);

...

}

...

}

...

}


 

안녕하세요? 허니입니다. 미국에서 시민권이나 영주권이 없이 사관학교를 진학하는 방법이 무엇이 있을까요? 버지니아 주립 사관학교(Virginia Military Institute, 이하 VMI)에 대해서 소개할까 합니다.



미국의 수도 워싱톤 디씨에서 3시간 떨어진 곳에 위치한 사관학교인 VMI는 연방 차원에서 운용하는 것이 아닌 버지니아 주정부에서 운영하는 사관학교이입니다. 사실 그 때문에 시설도 낙후한 것은 사실이나 200여년의 전통을 유지한 미국에서 가장 오래된 사관학교 중에 하나입니다. 졸업 후 각 군에 임관하는 연방의 미국육군사관학교, 미국해군사관학교, 미국공군사관학교, 해안경비대사관학교와 달리 2년제 ROTC가 아닌 4년제 ROTC로 지내면서 육군, 해군, 공군 원하는 군으로 선택하여 진학할 수 있습니다. 전교생 1600여명밖에 되지 않는 숫자로 얼마 안 되지만 20세기 초의 인원 가운데는 해병대 사령관을 지낸 레뮤얼 셰퍼드(Lemuel C. Shepherd, Jr.) 대장이나 랜돌프 페이트(Randolph M. Pate) 대장을 배출하기도 했고 제 2차 세계대전에서 마샬 플랜으로 유명한 조지 마셜 원수도 이 학교 출신입니다. 전 공군참모총장 존 점퍼 장군도 VMI 출신입니다. 그 외에도 수도 없이 유명한 미군 장군들을 배출하였습니다.



VMI에 대해서 쉽게 설명드리면...

예전 미국 남북전쟁이라고 들어보셨을 것이고, 링컨이 이끌던 북부군 사관학교는 지금 현 미국의 연방 육군사관학교 웨스트포인트였고, 데이비드 리가 이끌던 남부군 사관학교는 VMI입니다. 남북전쟁에서 이긴 링컨은 미국 연방 육군 사관학교를 웨스트포인트로 정하고 VMI는 버지니아 주립 사관학교로 버지니아 주에서 관리하게 하였습니다.



처음 VMI를 입학하면 1학년을 Cadet, 즉 생도이라고 부르지 않고 Rat, 쥐이라고 부릅니다. 그래서 1학년 기간은 Rat-Line이라고 합니다. 보통 입학 당시에 450~550여명이 함께 시작하여 시작과 동시에 100여명 가까이 학교를 그만두었는데 그 이유는 Rat-Line 기간동안 너무 힘든 훈련과 심리적인 압박 때문입니다.  그래도 Dyke 시스템이 있기 때문에 힘든 Rat line 기간동안 버틸수 있습니다.



기숙사는 Barracks 병영에서 지내게 되는데 유지보수는 계속 하지만 무려 200년 가까이 전통을 지키면서 지내게 됩니다. 사실 여기서 지내다 보면 왠만한 숙소는 어디에서도 잘 수 있을 정도로 시설이 낙후 되었습니다. 하지만 생활하다보면 VMI 생도로써 자부심도 생기고 동기와 선후배들이 똑같은 환경에서 똑같은 음식을 먹고 생활하기 때문에 대한민국 해병대보다 더 끈끈한 우정이 있는 것을 사실입니다.

안녕하세요? 허니입니다. 로이터에서 넷플릭스에 대해 기사가 올라와 공유합니다. 넷플릿스 주식을 사야할까요?


Wall Street eyes earnings, Netflix jumps after the bell

넷플릭스 주식, 월가에서 선전


After the close, Netflix jumped on better than expected subscriber growth. 

마감 후, 넷플릭스의 주가는 예상치를 웃도는 가입자 증가로 상승했습니다.


But Wall Street ended the day little changed as gains in utilities and consumer stocks offset declines in healthcare. 

그러나 월가는 공익사업 및 소비재에서의 이익이 의료 서비스에서의 하락을 상쇄하며 하루 동안 거의 변하지 않았습니다.


BlackRock fell after the world's biggest asset manager's quarterly profit came in below expectations. 

분기별 이익이 예상치에 미치지 못하며 세계에서 가장 큰 자산 운용사인 블랙락의 주가는 하락했습니다.


Hilary Kramer of A&G Capital Research: 

A & G 캐피털 리서치의 힐러리 크레이머는 다음과 같이 말합니다.



"I think It's very important that every investor listens and really thinks about the message that we heard from the big banks, especially JPMorgan that reported on last Friday. The message there was that the yield curve is flattening, okay? It actually might invert. It's a horrible sign for our economy and the market, but a flattening yield curve is very bad for the future of these banks to be able to make money. They like to borrow low and lend out high. If the yield curve is the same, they can't make that spread, and it could really impact earnings down the road." 

"저는 모든 투자가들이, 특히 지난 금요일에 보고를 했던 JP모건을 비롯한, 큰 은행들로부터 우리가 듣는 메시지를 듣고 정말로 생각해보는 것이 매우 중요하다고 생각합니다. 그 쪽에서의 메시지는 수익 곡선이 평평해지고 있다는 것이었습니다, 그렇죠? 그것은 실제로 반전될 수도 있습니다. 그것은 우리의 경제와 시장에 대한 끔찍한 징조이지만, 평평한 수익 곡선은 돈을 버는 것과 관련해 이 은행들의 미래에 대해서는 정말로 나쁜 것입니다. 그들은 낮은 이자로 돈을 꾸고 높은 이자로 돈을 빌려주는 것을 좋아합니다. 만약 수익 곡선이 동일하다면, 그들은 그러한 차액을 만들 수 없고, 그것은 정말로 장래에 수익에 영향을 미칠 수 있습니다. "


Procter & Gamble was up slightly on the news that investor Nelson Peltz wants a seat on the company's board. 

프록터앤드갬블은 투자자인 넬슨 펠츠가 회사의 이사회 자리를 원한다는 소식에 약간 올랐습니다.


And Blue Apron plunged after Amazon filed a trademark for a competing meal-kit service. 

그리고 블루에이프런은 아마존이 경쟁 업종인 식재료 키트 서비스에 대한 상표 등록을 함에 따라 급락했습니다.


In Europe, stocks closed mixed. 

유럽에서는 주가가 엇갈렸습니다.

안녕하세요? 허니입니다. 쿠키/세션 인증 취약점에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다.

 

쿠키(Cookie)는 사용자 정보를 유지할 수 없는 HTTP(Hyper Text Transfer Protocol)의 단점을 해결할 수 있는 방법의 하나로서 각 서버는 쿠키를 사용하여 브라우저가 갖고 있는 정보를 참조할 수 있습니다. 이와 같이 클라이언트에서 동작되는 쿠키는 암호화 등의 문제를 비롯하여 그 구조상 클라이언트 측에서의 조작으로 인한 다양한 문제점을 가지고 있어, 많은 웹 프로그래밍 언어들에는 서버에 클라이언트의 정보를 저장하는 세션(Session)을 지원하고 있다. 적절히 보호되지 않은 쿠키를 사용하면 Cookie Injection등과 같은 쿠키값 변조를 통하여 다른 사용자로의 위장 및 권한상승 등의 문제가 생길 수 있다. 또한 쿠키 및 세션은 Cookie Sniffing 및 악성스크립트실행(XSS)를 통한 Cookie Hijacking 등과 같은 쿠키 값 복사를 통해 현재 활성화된 사용자의 권한 복제 위험성이 존재합니다

 

 대응방법
쿠키 보다 세션 기반 공격에서 상대적으로 안전하기 때문에 쿠키 기반 방식보다 세션이나 토큰을 사용하는 방식을 권장합니다. 쿠키 설정 시 사용자 아이디, 주민번호 등과 같이 중요한 사용자 정보는 평문으로 사용하지 말아야 하며 사용자가 쿠키 값의 조작이 쉽지 않도록 합니다. 세션 사용 등 서버 측 인증 기술을 사용하여야 하며, 부재 시 강제로 서버에서 세션을 파기하도록 시간을 설정 하고 인증이 필요한 모든 페이지는 서버 측에서 인증하도록 수정합니다. 한 세션에 대한 IP정보를 기록하여 중복 세션 사용이 되지 않도록 해야 합니다. http only 옵션을 사용하여 XSS 쿠키 하이재킹 공격을 무력화 시켜야 합니다.

 

Response.AddHeader "Set-Cookie", "CookieName=CookieValue; path=/;HttpOnly"

 

HttpOnly 옵션 사용 시 XST 공격에 취약할 수 있으며, XSS/CSRF 취약점 대응방법을 통해 XST 공격에 대한 설정을 수행해야 합니다. 사용자 인증 등 중요기능 구현 시 가급적이면 Cookie 대신 Session 방식을 사용해야 합니다. 사용자 인증 등 중요 기능 구현 시 Cookie(또는 Session) 방식 활용 시 안전한 알고리즘(SEED, 3DES, AES 등)을 사용해야 합니다. 아래의 코드는 쿠키를 생성 시 value 값을 받아들여 getEncrypt(AES 암호화)함수를 통해 AES 암호화 후 쿠키를 생성하게 하는 방법입니다.(JAVA)

Public void createCookie(){
String value = “1234”;
Value = getEncrypt(value);
Cookie cookie = new Cookie(“cookie_key”, value);
Cookie.setMaxAge(60*60*24);
Cookie.setPath(“/”);
Response.addCookie(cookie);
}

 

 

안녕하세요? 허니입니다. 백업 파일 및 테스트 파일 존재 취약점에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다.

 

개발 과정에서 생긴 백업 파일은 웹 상에 쉽게 노출 될 수 있으며 .bak, .org, .old, .zip, .log 등 사용자 임의의 파일명을 사용하게 됩니다. 이러한 파일명은 웹 서버 설정에서 php, asp, jsp등 해당 스크립트를 해석하도록 설정이 되어 있지 않은 경우가 많아 웹 상에서 소스가 그대로 노출 될 수 있습니다.

 

 테스트 파일 존재 대응방법
웹 디렉터리를 조사하여 다음과 같은 백업파일을 모두 삭제 하고, *.txt 같이 작업 중 생성된 일반 텍스트 파일이나 이미지 파일 등도 제거합니다.

 

삭제해야 할 파일 확장자

*.bak

*.backup

*.org

*.old

*.zip

*.log

*.!

*.sql

*.new

*.txt

*.tmp

*.temp

 

백업파일은 백업계획을 수립하여 안전한 곳에 정기적으로 백업을 해야 하며 웹 서버상에는 웹 서버상에는 운영에 필요한 최소한의 파일만을 생성하도록 해야 합니다.

 

 Default 파일 존재 대응방법
웹 서버 설정 후 Default Page 와 Default Directory 및 Banner를 삭제하여 Banner Grab에 의한 시스템 정보 유출을 차단합니다. Apache, IIS, Tomcat 등 각 웹 서버 설정 시 함께 제공되는 Sample 디렉터리 및 Manual 디렉터리, Sample Application을 삭제하여 보안 위험을 최소화 합니다.

안녕하세요? 허니입니다. 코넬 노트라고 아시나요? 코넬 대학에서 대학생들에게 가장 효과적인 필기법을 연구하였는데 그 정리 방법에 대해 알아보도록 하겠습니다.

 

1. 코넬 노트란?

코넬식 노트 정리법은 1960년대에 코넬대학에서 대학생들에게 가장 효과적인 필기법을 연구 하여 개발한 방법입니다. 그 후 전 세계에서 이 방법을 이용해서 필기하고 있으며, 우리나라에서도 여러 대학에서 그 활용방법에 대해 소개하고 있습니다. 코넬 노트 정리법은 노트 필기 방법 중에서 가장 효과적이라고 알려져 있습니다. 여러분들도 코넬노트 만들기에 도전해 보세요!

 


2. 코넬 노트 정리 6R의 원칙

수업을 듣는 동안 선생님의 강의나 판서 내용을 노트 필기 영역에 기록합니다. 불필요한 단어는 제거하고, 중심 단어들만 사용해서 전체 줄거리를 간략하게 써야 합니다.

 

 

① Record(기록하기)
수업을 듣는 동안 선생님의 강의나 판서 내용을 노트 필기 영역에 기록합니다. 불필요한 단어는 제거하고, 중심단어들만 사용해서 전체 줄거리를 간략하게 써야 합니다.

 

② Reduce(축약하기)
필기 영역에 쓴 내용을 보고, 중요한 사실이나 생각들을 왼쪽 단성 영역에 적어두세요. 되도록이면 핵심 단어와 간단한 구문으로 축약하거나 사실들 에 기초한 질문을 만들어두면 좋습니다. 질문들은 중요한 사실과 그 의미들을 명확하게 이해하는데 도움이 됩니다.

 

③ Recite(외우기, 암송하기)
외우기(암송하기)는 기억을 유지하기 위한 가장 좋은 방법입니다. 외우기(암송하기)를 할 때는 오른쪽의 노트필기 영역을 보지 않고 왼쪽의 단서 단어들과 질문을 보고 하세요.단서를 보면서 노트 영역에 적어 놓은 중요 구문이나 문장을 크게 외워 보는것이 좋습니다.

 

④ Reflect(생각 발전시키기)
이 단계는 수업에서 배운 내용들에 관해서 조금 더 심도 있게 공부할 수 있는 단계입니다. 이 단계에서는 다음 질문들을 이용해서 배운 내용들을 연결시켜보세요.
(질문1) 내가 이미 배워서 알고 있는 것과 어떻게 맞아 떨어질까?
(질문2) 이 내용이 중요한지 어떻게 알 수 있을까?
(질문3) 이런 사실(생각)이 의미하는 것은 무엇일까?

 

⑤ Review(복습하기)
잊어버리지 않기 위해 주기적으로 노트를 보고 다시 외워야 합니다. 이런 방법이 시험 며칠 전에 단기간 암송을 하는 것보다 훨씬 더 효과적이며, 시험 점수를 올리는데 가장 좋은 방법 입니다.

 

⑥ Recapitulate(요약하기)
노트의 하단부에 있는 요약 영역에 노트의 내용을 요약합니다. 요약의 내용에는 필기한 내용의 중요한 포인트들이 포함되어야 합니다. 요약에 관한 세 가지 방법이 있으니 참고하세요.
(방법1) 각 페이지의 요약 영역에 필기에 대한 요약을 합니다 - 수업 요약
(방법2) 마지막 페이지에 전체 단원에 대한 전체적인 요약을 합니다 - 단원 요약
(방법3) 두 가지 방법을 모두 사용하시면 더욱 효과적입니다.

 

 

 

 

안녕하세요? 허니입니다. 관리자 페이지 노출 및 추측 취약점에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다.

 

단순한 관리자 페이지 경로(/admin, /manager 등) 사용 또는 설정, 프로그램 설계상의 오류, 인증 미흡으로 인해 관리자 메뉴에 직접 접근이 가능한 취약점입니다. 또한, 노출된 URL에 의해 직접접근을 시도 하여 접근권한에 대한 인증을 우회할 수 있는 취약점입니다. 공격자는 이러한 방법으로 관리자 메뉴페이지에 로그인 과정 없이 접속하여 관리자페이지를 조작, 회원정보 열람 등 민감한 정보를 획득 및 공지사항 등 인증이 필요한 글쓰기 게시판에 악의적인 게시물을 게시 가능합니다.

 

 대응방법
관리자 페이지에는 접근권한을 가진 IP에서만 접근 가능하도록 ACL(Access Control List)을 설정합니다. 관리자 인증 후 접속할 수 있는 페이지의 경우 해당 페이지 주소를 직접 입력하여 접근하지 못하도록 페이지 각각에 대하여 관리자 인증을 위한 세션을 관리합니다.

 

IIS 웹 서버 보호 대책

① 설정 > 제어판 > 관리도구 > 인터넷 서비스 관리자 선택
② 해당 관리자 페이지 폴더에 오른쪽 클릭하고 등록정보 > 디렉토리 보안 > IP
 주소 및 도메인 이름 제한 > 편집 버튼을 클릭
③ 액세스 거부를 선택하고 추가 버튼을 클릭하여 관리자 호스트 IP 또는 서브넷을 등록

 


[그림 1] IIS 보호 대책

 

Apache 웹 서버 보호 대책

Apache 웹 서버의 환경설정 파일인 httpd.conf 파일의 Directory 세션의 AllowOverride 지시자에서 AuthConfig 또는 All을 추가하여 .htaccess를 통하여 사용자 계정, 사용자 패스워드를 등록한 사용자만 접근이 가능하도록 하고 관리자 디렉토리(admin)에 대해 특정 IP에 대해서만 접근이 가능하도록 설정

 

#먼저 접근을 제어하고자 하는 디렉토리에 대한 상위 디렉토리 정의에
#AllowOverride 부분이 ‘All', 'AuthConfig', 'FileInfo' 등으로 설정
<Directory /home/www/admin/>
AllowOverride AuthConfig
Order deny, allow
Deny from all
Allow from 10.10.100.7 10.10.2.1/24
</Directory>
AccessFileName .htaccess
<File ~ "^\ht">
Order allow, deny
Deny from all
</Files>
<.htaccess>
AuthName "인증이 필요한 관리자 페이지입니다.“
AuthType Basic
AuthUserFile /home/www/admin/.htpasswd
AuthGroupFile /dev/null
require valid-user
Order deny, allow
Deny from all
Allow from 10.10.100.7 10.10.2.1/24

 

관리자 페이지와 같이 인증이 필요한 디렉토리에 .htaccess 파일을 만들고 admin계정의 패스워드 ~apache/bin/htpasswd를 이용하여 사용자 정보 파일(.htpasswd)을 생성

 

<Directory /home/www/admin/>
# ~apache/bin/htpasswd -c /home/www/admin/.htpasswd [사용자명]
New password: ********
Re-type new password: ********
Adding password for user [사용자명]
#

 

※ 주의사항
- Apache 서버의 경우 AllowOverride 지시자를 변경 시 apache restart가 필요
- 관리자 페이지의 디렉토리명 변경 시 웹 프로그램에서 경로명을 지정하는 경우 수정하여야 함
- 관리자 디렉토리내 일반 사용자의 접근이 필요한 파일이 존재하지 않아야 함


 

 

안녕하세요? 허니입니다. 오늘은 사이버 해킹 프로그램 Terabit Virus Maker에 대해 소개해 드리겠습니다. 사이버 해킹에 대해 관심 있는 분들은 알아두면 좋을만한 자료 같습니다.

 

 요약정보
Terabit Virus Maker는 대표적인 티빗 바이러스 생성기로 트로이목마(Trojan Horse) 및 바이러스(Virus)를 자동으로 제작하여 주는 소프트웨어로 간단한 클릭만으로도 Virus 프로그램을 제작해 준다. 또한 Terabit Virus Maker는 아래 그림과 같이 파일 하나로 되어 있어서 사용하기도 편하다. 이 도구들의 지속적인 등장의 의미는 최신 취약점과 온라인 뱅킹, 개인정보절취, 카드절취, 피싱 등에 이용하겠다는 의도로도 해석을 해 볼 수 있다.

 

그림1  Terabit Virus Maker 실행파일

 

아래 그림은 Terabit Virus Maker 3.2 실행 화면이다.

 

그림2  Terabit Virus Maker 실행화면

 

 참고자료
http://melodicdark.blogspot.com/2013/11/membuat-virus-dengan-terabit.html

 

 기술동향
‘Terabit virus maker’의 가장 큰 위력은 트로이목마와 바이러스를 전문적인 지식이 없더라도 마우스 클릭만으로도 짧은 시간 내로 강력한 성능을 가진 트로이목마를 작성할 수 있다는 것이다. 또한 윈도우 방화벽 설정 무력화, 스팸과 같은 다양한 경로를 사용하여 널리 배포할 수도 있다. 아래 그림과 같이 VirusTotal에서 Terabit virus maker에서 생성된 파일 검사 결과를 보면 생성 파일에 탐지 비율이 90%로가 넘는 것으로 나와 있다.

 

그림3  VirusTotal에서 Terabit virus maker 파일 체크


 Terabit Virus Maker 옵션 설명
Terabit Virus Maker에는 40개 바이러스 옵션이 있으며 몇 가지 클릭만으로 쉽게 바이러스를 생성할 수 있다. Window 7 이상 버전에서는 많은 옵션들이 되지 않지만 바이러스 파일 실행 시 CPU와 메모리에 과부하가 걸리는 것을 확인하였다.

 

그림4  Terabit Virus Maker 옵션 목록

 

- Avoid Opening Calculator : 계산기 여는 것을 차단시킨다.
- Avoid Opening Copy, Move Window : 창을 복사하거나 위치를 옮기는 것을 차단시킨다.
- Avoid Opening Gpedit : gpedit.msc(로컬 그룹 정책 편집기) 여는 것을 차단시킨다.
- Avoid Opening Media Palyer : 윈도우 미디어 플레이어 여는 것을 막는다.
- Avoid Opening Mozilla Firefox : Mozilla Firefox (브라우저) 여는 것을 차단한다.
- Avoid Opening MsConfig : Ms Config (시스템 구성) 여는 것을 차단한다.
- Avoid Opening Notepad : 메모장 여는 것을 차단한다.
- Avoid Opening Wordpad : Wordpad 여는 것을 차단한다.
- Avoid Opening Yahoo Messenger : 야후 메신저 여는 것을 차단한다.
- Add 30 User Accounts to Windows : 30개의 유저 계정 추가한다.
- Always Clean Clipboard : 클립보드를 항상 없앤다.
- Always Log off : 항상 로그오프 시킨다.
- Close Internet Explorer Every 10 sec : 10초마다 모든 인터넷 익스플로러 창을 닫는다.
- Delete All Files In Desktop : 바탕화면에 있는 모든 파일을 지운다.
- Delete All Files In My Documents : 내 문서에 있는 모든 파일을 지운다.
- Delete Windows Fonts : 글꼴을 모두 지운다.
- Delete Windows Screen Savers : 화면 보호기를 모두 지운다.
- Disconnect From Internet : 인터넷 연결을 차단한다.
- Disable Automatic Updates : 윈도우 자동 업데이트를 차단한다.
- Disable Command Prompt : 명령 프롬포트(cmd)를 여는 것을 차단한다.
- Disable Printer : 프린터와 연결 못하게 한다.
- Disable Regedit : Regedit을 차단한다.
- Disable Screen Saver : 화면보호기가 실행되는 것을 차단한다.
- Disable System Restore : system restore을 차단한다.
- Disable Windows Firewall : 윈도우 방화벽을 차단한다.
- Disable Windows Installer : 윈도우 설치기를 차단한다.
- Disable Windows Security Center : 윈도우 보안센터를 차단한다.
- Disable Windows Security Essentials : Window Security Essentials를 차단한다.
- Disable Window Themes : 윈도우 테마를 차단한다.
- Formate All Hard Drives : 모든 하드 드라이브를 포맷한다.
- Funny Keyboard : 웃긴 키보드 (옵션 확인하지 못했다.)
- Funny Mouse : 웃긴 마우스 (옵션 확인하지 못했다.)
- Funny Start Button : 웃긴 시작버튼(옵션 확인하지 못했다.)
- Gradually Fill System Volume : 시스템 볼륨을 꽉 채운다.
- Hide Desktop Icons : 바탕화면 아이콘을 모두 숨긴다.
- Hide Folder Option Menu : 폴더 옵션 메뉴를 모두 가린다.
- Hide Taskbar : 작업 표시줄을 가린다.
- Lock All Drives, Folders : 모든 드라이브와 폴더를 잠근다.
- Lock Internet Explorer Option Menu : 인터넷 익스플로러 옵션메뉴를 잠근다.
- Mute System Volume : 시스템 볼륨을 음소거로 만든다. (0으로 만든다)
- Open/Close CD-ROM Every 10 sec : CD-ROM 을 10초마다 열었다가 닫는다.
- Play Beep Sound Every Sec : 본체 컴퓨터에서 “Beep” 소리를 1초마다 낸다.
- Remove Desktop Wallpaper : 배경화면 사진을 없앤다.
- Remove Run From Start Menu : 시작 메뉴에서 '실행' 버튼을 없앤다.
- Remove Start Button : 시작 메뉴를 없앤다.
- Remove Windows Clock : 작업표시줄의 시계를 없앤다.
- Slow Down PC Speed : 컴퓨터의 속도를 줄인다.
- Spread with Folders : 폴더로 바탕화면을 도배한다.
- Stop SQL Server : SQL 서버를 멈춘다.
- Swap Mouse Buttons : 마우스 버튼 좌우를 바꾼다.
- Transparent Explorer Windows : 파일 탐색기 창을 투명하게 만든다.
- Turn off Computer After 5 min : 5분후에 컴퓨터를 끈다.
- Turn off Monitor : 모니터를 끈다.

 


그림5  왼쪽 옵션메뉴


옵션 메뉴에서는 만들고 싶은 바이러스를 쉽게 만들 수 있다. 또한 왼쪽 옵션메뉴를 통해 fake error message, Run Custom Command 등 가짜 Error 메시지와 가짜 파일 크기 표시 등 Terabit virus maker가 제공하는 옵션 내에서 사용자가 원하는 바이러스를 만들 수 있다. 특히 가짜 파일 크기 표시에서는 실제 용량이 35kb라도 원하는 값을 넣으면 파일 크기를 크게 할 수도 작게 할 수도 있다. File name after install은 바이러스의 파일 이름과 확장자를 선택할 수 있다. 원하는 옵션을 모두 선택한 후에는 create virus 는 바이러스 생성 버튼을 클릭하면 원하는 바이러스가 생성된다. 아래 그림은 File name after install에서 원하는 아이콘과 파일 이름을 정해서 바이러스 생성 파일을 만든 화면이다.

 

그림6  Create Virus 클릭 후 화면

 


그림7  바탕화면에 나타난 Hello.exe 파일

안녕하세요? 허니입니다. 중요 정보 파일 다운로드 취약점에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다. 


웹 페이지에서 파일의 경로가 노출되어 있고, 파일의 위치에 대한 보안적 조치가 없을 경우, 파일 다운로드 경로를 변경하여 웹 서버 내의 중요 파일들을 다운로드 할 수 있는 취약점입니다. 게시판 등에 저장된 자료에 대해 다운로드 스크립트를 이용하여 다운로드 기능을 제공하면서, 대상 자료파일의 위치 지정에 제한조건을 부여하지 않았을 경우에 URL 다운로드 스크립트의 인수값에 ‘../’문자열 등을 입력하여 상위 경로로 이동하여 시스템의 중요파일 (예:/etc/passwd)과 같은 비공개 자료들을 유출될 위험이 존재하며 특히, 리눅스 및 유닉스 계열의 웹 서버에 각별한 주의가 필요합니다.

 

 일반적 대응방법 
첨부파일이 저장되어 있는 특정 디렉토리에 있는 파일만을 다운 받을 수 있도록 합니다.
(다운받기 위한 파일 이름에 “..”, “/”, “\”와 같은 문자열이 존재하면 모두 필터링 해야함.)

 

 개발 언어별 대응방법
- 보안코딩(ASP)

<%
file = Request.Form ("file")'파일 이름

Response.ContentType = "application/unknown"'ContentType 선언
Response.AddHeader "Content-Disposition","attachment; filename=" & file
Set objStream = Server.CreateObject("ADODB.Stream")'Stream 이용
strFile = Server.MapPath("./upfiles/") & "\" & file '서버 절대경로
strFname=Mid(Fname,InstrRev(file,"\")+1) '파일 이름 추출, ..\ 등의 하위 경로 탐색은 제거 됨
strFPath = Server.MapPath("./upfiles/") & "\" & strFname '웹서버의 파일 다운로드 절대 경로
If strFile = strFPath Then'사용자가 다운 받는 파일과 웹 서버의 파일 다운로드 경로가 맞는지 비교
objStream.Open
objStream.Type = 1
objStream.LoadFromFile strFile
download = objStream.Read
Response.BinaryWrite download
End If
Set objstream = nothing'객체 초기화
%>


- 보안코딩(PHP)

if (preg_match("/[^a-z0-9_-]/i",$up_dir))
print "디렉토리에 특수문자 체크";
exit;

if (preg_match("/[^\xA1-\xFEa-z0-9._-]|\.\./i",urldecode($dn_file_name)))
print "파일이름에 특수문자 체크";
exit;
$dn_path = "/var/www/data/$up_dir/$dn_file_name";
if (!file_exists($dn_path))
print "파일이 존재여부 체크";
exit;
//파일 전송 루틴
header("Content-Type: doesn/matter");
header("Content-Length: ".filesize("$dn_path"));
header("Content-Disposition: filename=".$dn_file_name]);
header("Content-Transfer-Encoding: binary\r\n");
header("Pragma: no-cache");
header("Expires: 0");


- 보안코딩(JSP)

String UPLOAD_PATH= "/var/www/upload/";
String filename= response.getParameter("filename");
String filepathname = UPLOAD_PATH + filename;

if(filename.equalsIgnoreCase("..") || filename.equalsIgnoreCase("/"))
// 파일 이름 체크
return 0;
// 파일 전송 루틴
response.setContentType("application/unknown; charset=euc-kr");
response.setHeader("Content-Disposition","attachment;filename=" + filename + ";");
response.setHeader("Content-Transfer-Encoding:" , "base64");
try
BufferedInputStream in = new BufferedInputStream(new FileInputStream(filepathname));
.........
catch(Exception e)
// 에러 체크 [파일 존재 유무등]


 

+ Recent posts