13 KiB
Radio
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
SigDigger
SigDigger 는 GNU/Linux 및 macOS용 무료 디지털 신호 분석기로, 알려지지 않은 라디오 신호의 정보를 추출하도록 설계되었습니다. 다양한 SDR 장치를 SoapySDR를 통해 지원하며, FSK, PSK 및 ASK 신호의 조정 가능한 복조, 아날로그 비디오 디코딩, 버스트 신호 분석 및 아날로그 음성 채널 청취(모두 실시간)를 허용합니다.
Basic Config
설치 후 구성할 수 있는 몇 가지 사항이 있습니다.
설정(두 번째 탭 버튼)에서 SDR 장치를 선택하거나 파일을 선택하여 읽고 조정할 주파수 및 샘플 속도(PC가 지원하는 경우 최대 2.56Msps 권장)를 선택할 수 있습니다.\
GUI 동작에서 PC가 지원하는 경우 몇 가지를 활성화하는 것이 좋습니다:
{% hint style="info" %} PC가 신호를 캡처하지 못하는 경우 OpenGL을 비활성화하고 샘플 속도를 낮추어 보십시오. {% endhint %}
Uses
- 신호의 일부를 캡처하고 분석하려면 "Push to capture" 버튼을 필요한 만큼 유지하십시오.
- SigDigger의 튜너는 더 나은 신호를 캡처하는 데 도움을 줍니다(하지만 신호를 저하시킬 수도 있습니다). 이상적으로는 0에서 시작하여 신호의 개선보다 노이즈가 더 커질 때까지 크기를 늘리십시오.
Synchronize with radio channel
SigDigger 로 듣고 싶은 채널과 동기화하고 "Baseband audio preview" 옵션을 구성한 다음, 전송되는 모든 정보를 얻기 위해 대역폭을 구성하고 튜너를 노이즈가 실제로 증가하기 시작하기 전의 수준으로 설정하십시오:
Interesting tricks
- 장치가 정보의 버스트를 전송할 때, 일반적으로 첫 번째 부분은 프리앰블이므로 정보를 찾지 못하더라도 걱정할 필요가 없습니다 또는 거기에 오류가 있는 경우.
- 정보 프레임에서 일반적으로 서로 잘 정렬된 다양한 프레임을 찾아야 합니다:
- 비트를 복구한 후에는 어떤 식으로든 처리해야 할 수 있습니다. 예를 들어, 맨체스터 부호화에서 up+down은 1 또는 0이 되고 down+up은 다른 하나가 됩니다. 따라서 1과 0의 쌍(업과 다운)은 실제 1 또는 실제 0이 됩니다.
- 신호가 맨체스터 부호화를 사용하고 있다면(연속으로 0 또는 1이 2개 이상 발견되는 것은 불가능), 프리앰블에서 여러 개의 1 또는 0을 찾을 수 있습니다!
Uncovering modulation type with IQ
신호에 정보를 저장하는 방법은 3가지가 있습니다: 진폭, 주파수 또는 위상을 변조하는 것입니다.
신호를 확인할 때 정보를 저장하는 데 사용되는 방법을 알아내기 위해 시도할 수 있는 다양한 방법이 있지만(아래에서 더 많은 방법을 찾으십시오) 좋은 방법 중 하나는 IQ 그래프를 확인하는 것입니다.
- AM 감지: IQ 그래프에 예를 들어 2개의 원이 나타나면(아마도 하나는 0이고 다른 하나는 다른 진폭), 이는 AM 신호일 수 있습니다. 이는 IQ 그래프에서 0과 원 사이의 거리가 신호의 진폭이기 때문에 서로 다른 진폭이 사용되는 것을 쉽게 시각화할 수 있습니다.
- PM 감지: 이전 이미지와 같이 서로 관련이 없는 작은 원을 찾으면 이는 위상 변조가 사용되고 있음을 의미할 수 있습니다. 이는 IQ 그래프에서 점과 0,0 사이의 각도가 신호의 위상이기 때문에 4개의 서로 다른 위상이 사용된다는 것을 의미합니다.
- 정보가 위상이 변경된 사실에 숨겨져 있고 위상 자체에 숨겨져 있다면, 서로 다른 위상을 명확하게 구분할 수 없습니다.
- FM 감지: IQ에는 주파수를 식별하는 필드가 없습니다(중심까지의 거리는 진폭이고 각도는 위상입니다).
따라서 FM을 식별하려면 이 그래프에서 기본적으로 원만 보아야 합니다.
또한, 다른 주파수는 IQ 그래프에서 원 주위를 가로지르는 속도 가속으로 "표현"됩니다(따라서 SysDigger에서 신호를 선택하면 IQ 그래프가 채워지며, 생성된 원에서 가속 또는 방향 변경을 찾으면 이는 FM일 수 있습니다):
AM Example
{% file src="../../.gitbook/assets/sigdigger_20220308_165547Z_2560000_433500000_float32_iq.raw" %}
Uncovering AM
Checking the envelope
SigDigger 로 AM 정보를 확인하고 엔벨로프를 보면 서로 다른 명확한 진폭 수준을 볼 수 있습니다. 사용된 신호는 AM으로 정보를 전송하는 펄스를 보내고 있으며, 하나의 펄스는 다음과 같이 보입니다:
그리고 이것이 파형과 함께 기호의 일부처럼 보입니다:
Checking the Histogram
정보가 있는 전체 신호를 선택하고 진폭 모드와 선택을 선택한 다음 히스토그램을 클릭할 수 있습니다. 2개의 명확한 수준만 발견할 수 있습니다.
예를 들어, 이 AM 신호에서 진폭 대신 주파수를 선택하면 단 1개의 주파수만 발견됩니다(주파수로 변조된 정보가 단 1개의 주파수만 사용하는 것은 불가능합니다).
많은 주파수를 발견하면 이는 FM이 아닐 가능성이 높으며, 아마도 신호 주파수가 채널 때문에 수정되었을 것입니다.
With IQ
이 예제에서는 큰 원이 있지만 중앙에 많은 점이 있는 것을 볼 수 있습니다.
Get Symbol Rate
With one symbol
가장 작은 기호를 선택할 수 있습니다(그래서 1개만 확실히 있는지 확인) 및 "선택 주파수"를 확인하십시오. 이 경우 1.013kHz(즉, 1kHz)가 됩니다.
With a group of symbols
선택할 기호의 수를 지정할 수도 있으며 SigDigger는 1 기호의 주파수를 계산합니다(선택한 기호가 많을수록 더 좋습니다). 이 시나리오에서는 10개의 기호를 선택했으며 "선택 주파수"는 1.004 Khz입니다:
Get Bits
이것이 AM 변조 신호이고 기호 주파수를 찾았으며(이 경우 어떤 것이 위로 가면 1이고 어떤 것이 아래로 가면 0임을 알고 있음) 신호에 인코딩된 비트를 얻는 것이 매우 쉽습니다. 따라서 정보를 가진 신호를 선택하고 샘플링 및 결정을 구성한 다음 샘플을 누릅니다(확인: 진폭이 선택되어 있고 발견된 기호 주파수가 구성되어 있으며 Gadner 클록 복구가 선택됨):
- 선택 간격에 동기화는 이전에 기호 주파수를 찾기 위해 선택한 간격이 사용된다는 것을 의미합니다.
- 수동은 지정된 기호 주파수가 사용된다는 것을 의미합니다.
- 고정 간격 선택에서는 선택해야 할 간격의 수를 지정하고 그로부터 기호 주파수를 계산합니다.
- Gadner 클록 복구는 일반적으로 가장 좋은 옵션이지만 여전히 대략적인 기호 주파수를 지정해야 합니다.
샘플을 누르면 다음과 같은 결과가 나타납니다:
이제 SigDigger가 정보를 전달하는 레벨의 범위를 이해하도록 하려면 하위 레벨을 클릭하고 가장 큰 레벨까지 클릭을 유지해야 합니다:
예를 들어 4개의 서로 다른 진폭 수준이 있었다면, 기호당 비트를 2로 설정하고 가장 작은 것에서 가장 큰 것까지 선택해야 했습니다.
마지막으로 줌을 증가시키고 행 크기를 변경하면 비트를 볼 수 있습니다(모두 선택하고 복사하여 모든 비트를 얻을 수 있습니다):
신호에 기호당 1비트 이상(예: 2비트)이 있는 경우, SigDigger는 어떤 기호가 00, 01, 10, 11인지 알 수 없으므로 서로 다른 회색 음영을 사용하여 각각을 나타냅니다(비트를 복사하면 0에서 3까지의 숫자를 사용하므로 처리해야 합니다).
또한 맨체스터와 같은 부호화를 사용하고 up+down은 1 또는 0이 될 수 있으며, down+up은 1 또는 0이 될 수 있습니다. 이러한 경우에는 **얻은 업(1)과 다운(0)**을 처리하여 01 또는 10 쌍을 0 또는 1로 대체해야 합니다.
FM Example
{% file src="../../.gitbook/assets/sigdigger_20220308_170858Z_2560000_433500000_float32_iq.raw" %}
Uncovering FM
Checking the frequencies and waveform
FM으로 변조된 정보를 전송하는 신호 예제:
이전 이미지에서 2개의 주파수가 사용되고 있음을 꽤 잘 관찰할 수 있지만, 파형을 관찰하면 2개의 서로 다른 주파수를 정확하게 식별하지 못할 수 있습니다:
이는 내가 두 주파수에서 신호를 캡처했기 때문에 하나는 대략 다른 하나의 음수입니다:
동기화된 주파수가 한 주파수에 더 가까운 경우 두 개의 서로 다른 주파수를 쉽게 볼 수 있습니다:
Checking the histogram
정보가 있는 신호의 주파수 히스토그램을 확인하면 두 개의 서로 다른 신호를 쉽게 볼 수 있습니다:
이 경우 진폭 히스토그램을 확인하면 단 하나의 진폭만 발견되므로 AM이 될 수 없습니다(많은 진폭을 발견하면 신호가 채널을 따라 전력을 잃었을 가능성이 있습니다):
그리고 이것이 위상 히스토그램입니다(신호가 위상으로 변조되지 않았음을 매우 명확하게 보여줍니다):
With IQ
IQ에는 주파수를 식별하는 필드가 없습니다(중심까지의 거리는 진폭이고 각도는 위상입니다).
따라서 FM을 식별하려면 이 그래프에서 기본적으로 원만 보아야 합니다.
또한, 다른 주파수는 IQ 그래프에서 원 주위를 가로지르는 속도 가속으로 "표현"됩니다(따라서 SysDigger에서 신호를 선택하면 IQ 그래프가 채워지며, 생성된 원에서 가속 또는 방향 변경을 찾으면 이는 FM일 수 있습니다):
Get Symbol Rate
주파수를 찾은 후 기호 주파수를 얻기 위해 AM 예제에서 사용된 것과 동일한 기술을 사용할 수 있습니다.
Get Bits
주파수가 변조된 신호를 찾은 후 비트를 얻기 위해 AM 예제에서 사용된 것과 동일한 기술을 사용할 수 있습니다.