As the candidate, you always get to choose what you do and do not say, and how important it is to provide (or not provide) an answer to a question. The candidate can try to sidestep the question and answer the similar question of, "what is your expectation of salary for this role?", and thus the candidate can discuss their research about salaries for business analysts in the area with this experience, and hope that HR accepts this response.
As HR, they always get to choose what questions they ask, and how important it is to have an answer to that question. If there is a piece of information that HR really wants but the candidate refuses to provide it, then HR is in the position of deciding whether they want to make an offer without this information, or if they simply want to move on to another candidate who is willing to share that information.
Personally, as a software engineer, I don't think that I've ever not been asked about salary when interviewing. The general interview process that I'm used to is a phone interview with a recruiter, a phone interview with the hiring manager or someone on the team, and then an in-person interview with the team. Of all of the in-person interviews that I have done, salary expectations are always discussed before the in-person interview. From the hiring manager's point of view, there is no point in interviewing a candidate whose salary expectations are above their budget. When I'm asked about salary, I talk about total compensation: base salary, bonuses, stock options or grants, and benefit package.
For entry-level positions such as those that require less than two years of experience, there are often many candidates who are just as qualified but who are more forthcoming with the information that HR wants. Your friend needs to decide whether their desire to get as high of a salary as possible is higher than their desire to get a salary that is higher than the too-low one that they currently make.