//tips
//基本情報理解及びC#
水飲み場型攻撃とは、標的型攻撃の一つで攻撃対象企業や組織が日常的に利用するwebサイトを悪用するもので、標的組織の従業員が頻繁にアクセスするwebサイトを改竄し、標的組織の従業員がアクセスしてきた時だけウイルスなどのマルウェアを送り込んでPC感染させる。
このような危ないwebサイトへのアクセスを制限するためにURL/webフィルタリングにて自動的に閲覧を遮断する。
ログの検査を行うことで利用者認証の試行が短時間に大量に繰り返されていないかどうかを調べる。総当たり攻撃への対処。
マルウェアが設置したバックドアによる通信はHTTPで行われる事が多いため通常の通信との区別ができないという問題がある。
PCからプロキシサーバ経由でインターネットへアクセスしたときに、プロキシサーバによる利用者認証を行えばマルウェアは突破できないが、利用者から認証コードを手に入れたマルウェアは突破できてしまう。
利用者からの認証情報を取得させないようにするには、webブラウザに保存されている認証情報をマルウェアに読み出させないように記入内容を保存するオートコンプリート機能を無効にする。
NTPはネットワークに接続されている複数のノードにおいて、時刻の同期を行うためのプロトコルで、複数の機器のログに記録された事象を調査する場合、各ログに記録された時刻情報をもとに各ログの内容をトレースしていく必要があるため、重要になっている。
DMZとは、DeMilitarized Zoneの略で、インタネットなどの外部ネットワークと社内ネットワークの中間につくられるネットワーク上のセグメントのこと。外部ネットワークからも内部ネットワークからもファイアウォールなどによって隔離されている。この隔離されたDMZ内にサーバを設置するなどによってセキュリティ強化を図れる。
DMZ内に公開用のWebサーバを設置して、社内ネットワークと隔離することで、不正侵入された後のマルウェアの感染拡大を防ぐことができたり、業務システムなどへの侵入による機密情報の漏洩を防止することが可能になる。
//C#基礎振り返り
宣言型と手続き型の違いを確認する。
宣言型:どのような条件でどのような形式のデータを取り出すのかを表す
手続き型:データを取得するのにどのようにデータベースにアクセスしてどのような手順でデータを取り出していくのかを表す
C#は二つの特性を持ち、LINQの仕様の際などで宣言的な部分も取り扱う。
.NET環境はそれぞれのプラットフォームに応じて提供されており、下記のような対応となっている。
Windows: .Net Framework
Linux/Mac: .Net Core
Android/ios: Xamarin(Mono)
時々見かけるXamarinはスマホ環境でのフレームワークであることを覚えておく。
昔はこれらのフレームワークが適応されておらず、自分でメモリの確保から開放まで管理しなければならず、開放のし忘れはメモリを逼迫するメモリリークの問題へと直結していた。
いつも使用している統合開発環境IDEであるvisual studioを使用することで、ソースコードをコンソールからコンパイルして、生成された.exeファイルを実行する必要がなく、再生ボタン一つでファイルの実行までが行えるようになっている。
.exeファイルはメインプログラムで、ここから利用するライブラリは.dllファイルと呼ばれる。ここの独立したプロジェクトファイルとして、分けて管理されるのが一般的とのこと。
これらのプロジェクトを束ねて管理するものがソリューションという単位で一つのアプリが一つのソリューションとなる。
Macでもwindowsでも動くアプリを作る場合にはvisual studio for Macの新規ソリューションで.NETのコンソールアプリフォームを選択できるようになるのでこちらを使用していく。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ctrainning
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("あなたの名前は?");
string name = Console.ReadLine();
Console.WriteLine("こんにちは、{0}さん!", name);
}
}
}
書いたものをいつもビルドするが、ビルドとはソースコードをコンピュータが理解できる形式に翻訳して、実行に必要なライブラリなどをリンクすること。
何気なく行っていたことも構造を認識できるようになる。
C#ではメソッドは自由にできるが、Mainだけは特別で、アプリが起動すると一番最初にMainを探して実行される。
また、名前解決できないためにエラーになっているとはusingによって所属している名前空間の指定が行われておらず、クラスがきちんと呼び出せていない時に生じる。
時々見かけるドキュメンテーションコメント///はクラスやメンバーの説明を行う時に用いる。
変数を宣言するということは、変数名をC#に通知し、さらに値を格納するための領域をメモリー上に確保することをいう。